]> Cypherpunks repositories - gostls13.git/commitdiff
http: fix failing Transport HEAD request with gzip-looking response
authorBrad Fitzpatrick <bradfitz@golang.org>
Wed, 14 Dec 2011 19:20:21 +0000 (11:20 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 14 Dec 2011 19:20:21 +0000 (11:20 -0800)
We only want to attempt to un-gzip if there's a body (not in
response to a HEAD)

This was accidentally passing before, but revealed to be broken
when c3c6e72d7cc went in.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5477093

src/pkg/net/http/transport.go

index dc70be43f2d7bb48c1bb0a4eeccd14edd1fd2a24..33ad32861b5b3fc382cf9980f4b13dd47e708f17 100644 (file)
@@ -539,12 +539,13 @@ func (pc *persistConn) readLoop() {
                resp, err := ReadResponse(pc.br, rc.req)
 
                if err == nil {
-                       if rc.addedGzip && resp.Header.Get("Content-Encoding") == "gzip" {
+                       hasBody := rc.req.Method != "HEAD" && resp.ContentLength != 0
+                       if rc.addedGzip && hasBody && resp.Header.Get("Content-Encoding") == "gzip" {
                                resp.Header.Del("Content-Encoding")
                                resp.Header.Del("Content-Length")
                                resp.ContentLength = -1
                                gzReader, zerr := gzip.NewReader(resp.Body)
-                               if err != nil {
+                               if zerr != nil {
                                        pc.close()
                                        err = zerr
                                } else {