Merge branch '15713-controller-error-log'
authorTom Clegg <tclegg@veritasgenetics.com>
Thu, 24 Oct 2019 21:07:59 +0000 (17:07 -0400)
committerTom Clegg <tclegg@veritasgenetics.com>
Thu, 24 Oct 2019 21:07:59 +0000 (17:07 -0400)
fixes #15713

Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>

sdk/go/httpserver/responsewriter.go

index 884f0d8d7e2c8a87dbf0cde11135bde24b6f32c0..049a3f1aae184de0ef522656741494db42764802 100644 (file)
@@ -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)
 }