diff --git a/tunnel/connection.go b/tunnel/connection.go index 327a1c6c..b5beb043 100644 --- a/tunnel/connection.go +++ b/tunnel/connection.go @@ -37,7 +37,16 @@ func (t *Tunnel) handleHTTP(request *adapters.HTTPAdapter, outbound net.Conn) { break } adapters.RemoveHopByHopHeaders(resp.Header) - if resp.ContentLength >= 0 { + + if resp.StatusCode == http.StatusContinue { + err = resp.Write(request) + if err != nil { + break + } + goto handleResponse + } + + if keepAlive || resp.ContentLength >= 0 { resp.Header.Set("Proxy-Connection", "keep-alive") resp.Header.Set("Connection", "keep-alive") resp.Header.Set("Keep-Alive", "timeout=4") @@ -50,14 +59,6 @@ func (t *Tunnel) handleHTTP(request *adapters.HTTPAdapter, outbound net.Conn) { break } - if !keepAlive { - break - } - - if resp.StatusCode == http.StatusContinue { - goto handleResponse - } - req, err = http.ReadRequest(inboundReeder) if err != nil { break