From 1c4f21ce5f5485fca9b9ddc74dc1222c792b4c31 Mon Sep 17 00:00:00 2001 From: Carl Jackson Date: Sat, 21 Jun 2014 23:13:45 -0700 Subject: [PATCH] Record the first written status, not the last If WriteHeader is called multiple times on a http.ResponseWriter, the first status is the one that is used, not the last. Fix the wrapped writer to reflect this fact. --- web/middleware/writer_proxy.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/web/middleware/writer_proxy.go b/web/middleware/writer_proxy.go index bd6c097..0142403 100644 --- a/web/middleware/writer_proxy.go +++ b/web/middleware/writer_proxy.go @@ -33,9 +33,11 @@ type basicWriter struct { } func (b *basicWriter) WriteHeader(code int) { - b.code = code - b.wroteHeader = true - b.ResponseWriter.WriteHeader(code) + if !b.wroteHeader { + b.code = code + b.wroteHeader = true + b.ResponseWriter.WriteHeader(code) + } } func (b *basicWriter) Write(buf []byte) (int, error) { b.maybeWriteHeader()