diff options
Diffstat (limited to 'src/pkg/http/transport.go')
-rw-r--r-- | src/pkg/http/transport.go | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/pkg/http/transport.go b/src/pkg/http/transport.go index 98ac203b72..73a2c2191e 100644 --- a/src/pkg/http/transport.go +++ b/src/pkg/http/transport.go @@ -532,12 +532,13 @@ func (pc *persistConn) roundTrip(req *Request) (resp *Response, err os.Error) { re.res.Header.Del("Content-Encoding") re.res.Header.Del("Content-Length") re.res.ContentLength = -1 - gzReader, err := gzip.NewReader(re.res.Body) + esb := re.res.Body.(*bodyEOFSignal) + gzReader, err := gzip.NewReader(esb.body) if err != nil { pc.close() return nil, err } - re.res.Body = &readFirstCloseBoth{gzReader, re.res.Body} + esb.body = &readFirstCloseBoth{gzReader, esb.body} } return re.res, re.err @@ -619,6 +620,7 @@ type readFirstCloseBoth struct { func (r *readFirstCloseBoth) Close() os.Error { if err := r.ReadCloser.Close(); err != nil { + r.Closer.Close() return err } if err := r.Closer.Close(); err != nil { |