encode: flush already compressed data from the encoder (#6471)

This commit is contained in:
WeidiDeng 2024-07-28 07:46:56 +08:00 committed by GitHub
parent 9cc26ee7bf
commit 976469ca0d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -266,6 +266,14 @@ func (rw *responseWriter) FlushError() error {
// to rw.Write (see bug in #4314)
return nil
}
// also flushes the encoder, if any
// see: https://github.com/jjiang-stripe/caddy-slow-gzip
if rw.w != nil {
err := rw.w.Flush()
if err != nil {
return err
}
}
//nolint:bodyclose
return http.NewResponseController(rw.ResponseWriter).Flush()
}
@ -475,6 +483,7 @@ type encodingPreference struct {
type Encoder interface {
io.WriteCloser
Reset(io.Writer)
Flush() error // encoder by default buffers data to maximize compressing rate
}
// Encoding is a type which can create encoders of its kind