From: Brad Fitzpatrick Date: Tue, 31 Jan 2012 17:45:13 +0000 (-0800) Subject: net/http: close client fd sooner on response read error X-Git-Tag: weekly.2012-02-07~173 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c0ecfb072b02d5764e387af560bfedb1cadcac1c;p=gostls13.git net/http: close client fd sooner on response read error This fixes some test noise in TestStressSurpriseServerCloses when ulimit -n something low, like 256 on a Mac. Previously, when the server closed on us and we were expecting more responses (like we are in that test), we'd read an "Unexpected EOF" and just forget about the client's net.Conn. Now it's closed, rather than waiting on the finalizer to release the fd. R=golang-dev, rsc CC=golang-dev https://golang.org/cl/5602043 --- diff --git a/src/pkg/net/http/transport.go b/src/pkg/net/http/transport.go index 4de070f01f..693215edd4 100644 --- a/src/pkg/net/http/transport.go +++ b/src/pkg/net/http/transport.go @@ -535,7 +535,9 @@ func (pc *persistConn) readLoop() { } resp, err := ReadResponse(pc.br, rc.req) - if err == nil { + if err != nil { + pc.close() + } else { hasBody := rc.req.Method != "HEAD" && resp.ContentLength != 0 if rc.addedGzip && hasBody && resp.Header.Get("Content-Encoding") == "gzip" { resp.Header.Del("Content-Encoding")