diff options
author | WeidiDeng <[email protected]> | 2024-07-28 07:46:56 +0800 |
---|---|---|
committer | GitHub <[email protected]> | 2024-07-27 17:46:56 -0600 |
commit | 976469ca0dbbbd948dbfd6a4caedb1e7c914ef3d (patch) | |
tree | 515967b6a4f1e689e77e2e7809821cb146c399dd | |
parent | 9cc26ee7bf323f5fdffdfe7349794aa320a6ce6c (diff) | |
download | caddy-976469ca0dbbbd948dbfd6a4caedb1e7c914ef3d.tar.gz caddy-976469ca0dbbbd948dbfd6a4caedb1e7c914ef3d.zip |
encode: flush already compressed data from the encoder (#6471)
-rw-r--r-- | modules/caddyhttp/encode/encode.go | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/modules/caddyhttp/encode/encode.go b/modules/caddyhttp/encode/encode.go index cf3d17b69..00e507277 100644 --- a/modules/caddyhttp/encode/encode.go +++ b/modules/caddyhttp/encode/encode.go @@ -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 |