Fix: HTTP inbound leak

This commit is contained in:
gVisor bot 2021-05-06 22:34:37 +08:00
parent 79fe0273f6
commit 6cc17af658

View file

@ -29,9 +29,9 @@ func handleHTTP(ctx *context.HTTPContext, outbound net.Conn) {
for { for {
keepAlive := strings.TrimSpace(strings.ToLower(req.Header.Get("Proxy-Connection"))) == "keep-alive" keepAlive := strings.TrimSpace(strings.ToLower(req.Header.Get("Proxy-Connection"))) == "keep-alive"
req.Header.Set("Connection", "close")
req.RequestURI = "" req.RequestURI = ""
inbound.RemoveHopByHopHeaders(req.Header) inbound.RemoveHopByHopHeaders(req.Header)
req.Header.Set("Connection", "close")
err := req.Write(outbound) err := req.Write(outbound)
if err != nil { if err != nil {
break break
@ -72,14 +72,6 @@ func handleHTTP(ctx *context.HTTPContext, outbound net.Conn) {
break break
} }
// even if resp.Write write body to the connection, but some http request have to Copy to close it
buf := pool.Get(pool.RelayBufferSize)
_, err = io.CopyBuffer(conn, resp.Body, buf)
pool.Put(buf)
if err != nil && err != io.EOF {
break
}
req, err = http.ReadRequest(inboundReader) req, err = http.ReadRequest(inboundReader)
if err != nil { if err != nil {
break break