| 1234567891011121314151617181920212223242526272829303132333435 |
- package h2quic
- // copied from net/transport.go
- // gzipReader wraps a response body so it can lazily
- // call gzip.NewReader on the first call to Read
- import (
- "compress/gzip"
- "io"
- )
- // call gzip.NewReader on the first call to Read
- type gzipReader struct {
- body io.ReadCloser // underlying Response.Body
- zr *gzip.Reader // lazily-initialized gzip reader
- zerr error // sticky error
- }
- func (gz *gzipReader) Read(p []byte) (n int, err error) {
- if gz.zerr != nil {
- return 0, gz.zerr
- }
- if gz.zr == nil {
- gz.zr, err = gzip.NewReader(gz.body)
- if err != nil {
- gz.zerr = err
- return 0, err
- }
- }
- return gz.zr.Read(p)
- }
- func (gz *gzipReader) Close() error {
- return gz.body.Close()
- }
|