mirror of
https://github.com/golang/net.git
synced 2026-03-31 18:37:08 +09:00
release-branch.go1.6
This old code was buggy:
type gzipReader struct {
body io.ReadCloser // underlying Response.Body
zr io.Reader // lazily-initialized gzip reader
}
func (gz *gzipReader) Read(p []byte) (n int, err error) {
if gz.zr == nil {
gz.zr, err = gzip.NewReader(gz.body)
if err != nil {
return 0, err
}
}
return gz.zr.Read(p)
}
If a Read on a gzipped Response.Body (of type *http2.gzipReader)
resulted in gzip.NewReader returning an error, gzipReader assigned
a *gzip.Reader-typed nil value to the gz.zr interface value.
On a subsequent Read, gz.zr would not be equal to ==, because it was
actually equal to (type *gzip.Reader, nil), and then zr.Read would call
(*gzip.Reader).Read with a nil receiver and explode.
Debugged internally. (http://go/http2gzipbug)
Change-Id: Icba040ace8ffac3536e5e7ade6695c7660838ca1
…
This repository holds supplementary Go networking libraries. To submit changes to this repository, see http://golang.org/doc/contribute.html.
Description
Languages
Go
99.9%