diff --git a/lib/httpserver/httpserver.go b/lib/httpserver/httpserver.go index a382b4473b..997ea83772 100644 --- a/lib/httpserver/httpserver.go +++ b/lib/httpserver/httpserver.go @@ -365,10 +365,7 @@ func (zrw *gzipResponseWriter) Write(p []byte) (int, error) { h.Set("Content-Type", "text/html") } } - if zrw.statusCode == 0 { - zrw.statusCode = http.StatusOK - } - zrw.ResponseWriter.WriteHeader(zrw.statusCode) + zrw.writeHeader() zrw.firstWriteDone = true } if zrw.disableCompression { @@ -378,12 +375,16 @@ func (zrw *gzipResponseWriter) Write(p []byte) (int, error) { } func (zrw *gzipResponseWriter) WriteHeader(statusCode int) { - if zrw.statusCode != 0 { - return - } zrw.statusCode = statusCode } +func (zrw *gzipResponseWriter) writeHeader() { + if zrw.statusCode == 0 { + zrw.statusCode = http.StatusOK + } + zrw.ResponseWriter.WriteHeader(zrw.statusCode) +} + // Implements http.Flusher func (zrw *gzipResponseWriter) Flush() { if err := zrw.bw.Flush(); err != nil && !isTrivialNetworkError(err) { @@ -399,6 +400,7 @@ func (zrw *gzipResponseWriter) Flush() { func (zrw *gzipResponseWriter) Close() error { if !zrw.firstWriteDone { + zrw.writeHeader() return nil } zrw.Flush()