Fix: HTTP status code 100 Continue support" (#288)

* Fix: HTTP Status Code `100 Continue` support

* Style: code style adjustment
This commit is contained in:
Soar Qin 2019-09-08 11:21:28 +08:00 committed by Dreamacro
parent 9875f8ea6e
commit 9815010131

View File

@ -17,6 +17,9 @@ func (t *Tunnel) handleHTTP(request *adapters.HTTPAdapter, outbound net.Conn) {
req := request.R
host := req.Host
inboundReeder := bufio.NewReader(request)
outboundReeder := bufio.NewReader(conn)
for {
keepAlive := strings.TrimSpace(strings.ToLower(req.Header.Get("Proxy-Connection"))) == "keep-alive"
@ -27,8 +30,9 @@ func (t *Tunnel) handleHTTP(request *adapters.HTTPAdapter, outbound net.Conn) {
if err != nil {
break
}
br := bufio.NewReader(conn)
resp, err := http.ReadResponse(br, req)
handleResponse:
resp, err := http.ReadResponse(outboundReeder, req)
if err != nil {
break
}
@ -50,7 +54,11 @@ func (t *Tunnel) handleHTTP(request *adapters.HTTPAdapter, outbound net.Conn) {
break
}
req, err = http.ReadRequest(bufio.NewReader(request))
if resp.StatusCode == http.StatusContinue {
goto handleResponse
}
req, err = http.ReadRequest(inboundReeder)
if err != nil {
break
}