Commit c0ecfb07 authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

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
parent 847197d3
...@@ -535,7 +535,9 @@ func (pc *persistConn) readLoop() { ...@@ -535,7 +535,9 @@ func (pc *persistConn) readLoop() {
} }
resp, err := ReadResponse(pc.br, rc.req) resp, err := ReadResponse(pc.br, rc.req)
if err == nil { if err != nil {
pc.close()
} else {
hasBody := rc.req.Method != "HEAD" && resp.ContentLength != 0 hasBody := rc.req.Method != "HEAD" && resp.ContentLength != 0
if rc.addedGzip && hasBody && resp.Header.Get("Content-Encoding") == "gzip" { if rc.addedGzip && hasBody && resp.Header.Get("Content-Encoding") == "gzip" {
resp.Header.Del("Content-Encoding") resp.Header.Del("Content-Encoding")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment