1
0
mirror of https://github.com/labstack/echo.git synced 2025-12-03 22:59:09 +02:00

fix gzip not sending response code for no content responses (404, 301/302 redirects etc)

This commit is contained in:
toimtoimtoim
2023-07-16 20:15:24 +03:00
committed by Martti T
parent 60af056959
commit 130be07425
2 changed files with 38 additions and 20 deletions

View File

@@ -107,10 +107,16 @@ func GzipWithConfig(config GzipConfig) echo.MiddlewareFunc {
grw := &gzipResponseWriter{Writer: w, ResponseWriter: rw, minLength: config.MinLength, buffer: buf}
defer func() {
// There are different reasons for cases when we have not yet written response to the client and now need to do so.
// a) handler response had only response code and no response body (ala 404 or redirects etc). Response code need to be written now.
// b) body is shorter than our minimum length threshold and being buffered currently and needs to be written
if !grw.wroteBody {
if res.Header().Get(echo.HeaderContentEncoding) == gzipScheme {
res.Header().Del(echo.HeaderContentEncoding)
}
if grw.wroteHeader {
rw.WriteHeader(grw.code)
}
// We have to reset response to it's pristine state when
// nothing is written to body or error is returned.
// See issue #424, #407.