lib/httpserver: properly set status code for empty response

This commit is contained in:
Aliaksandr Valialkin 2020-05-24 23:55:28 +03:00
parent 64bec11c91
commit 301838e7b1

View File

@ -314,10 +314,7 @@ func (zrw *gzipResponseWriter) Write(p []byte) (int, error) {
h.Set("Content-Type", "text/html") h.Set("Content-Type", "text/html")
} }
} }
if zrw.statusCode == 0 { zrw.writeHeader()
zrw.statusCode = http.StatusOK
}
zrw.ResponseWriter.WriteHeader(zrw.statusCode)
zrw.firstWriteDone = true zrw.firstWriteDone = true
} }
if zrw.disableCompression { if zrw.disableCompression {
@ -327,12 +324,16 @@ func (zrw *gzipResponseWriter) Write(p []byte) (int, error) {
} }
func (zrw *gzipResponseWriter) WriteHeader(statusCode int) { func (zrw *gzipResponseWriter) WriteHeader(statusCode int) {
if zrw.statusCode != 0 {
return
}
zrw.statusCode = statusCode zrw.statusCode = statusCode
} }
func (zrw *gzipResponseWriter) writeHeader() {
if zrw.statusCode == 0 {
zrw.statusCode = http.StatusOK
}
zrw.ResponseWriter.WriteHeader(zrw.statusCode)
}
// Implements http.Flusher // Implements http.Flusher
func (zrw *gzipResponseWriter) Flush() { func (zrw *gzipResponseWriter) Flush() {
if err := zrw.bw.Flush(); err != nil && !isTrivialNetworkError(err) { if err := zrw.bw.Flush(); err != nil && !isTrivialNetworkError(err) {
@ -348,6 +349,7 @@ func (zrw *gzipResponseWriter) Flush() {
func (zrw *gzipResponseWriter) Close() error { func (zrw *gzipResponseWriter) Close() error {
if !zrw.firstWriteDone { if !zrw.firstWriteDone {
zrw.writeHeader()
return nil return nil
} }
zrw.Flush() zrw.Flush()