X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e701875382821088123769823f6b66a5a4ae2907..35d5c737656b1ab7c2bdda27de3f67332be831c0:/sdk/go/httpserver/responsewriter.go diff --git a/sdk/go/httpserver/responsewriter.go b/sdk/go/httpserver/responsewriter.go index 884f0d8d7e..049a3f1aae 100644 --- a/sdk/go/httpserver/responsewriter.go +++ b/sdk/go/httpserver/responsewriter.go @@ -22,7 +22,7 @@ type ResponseWriter interface { // error. type responseWriter struct { http.ResponseWriter - wroteStatus int // Last status given to WriteHeader() + wroteStatus int // First status given to WriteHeader() wroteBodyBytes int // Bytes successfully written err error // Last error returned from Write() sniffed []byte @@ -40,7 +40,12 @@ func (w *responseWriter) CloseNotify() <-chan bool { } func (w *responseWriter) WriteHeader(s int) { - w.wroteStatus = s + if w.wroteStatus == 0 { + w.wroteStatus = s + } + // ...else it's too late to change the status seen by the + // client -- but we call the wrapped WriteHeader() anyway so + // it can log a warning. w.ResponseWriter.WriteHeader(s) }