http: Always set status code via response recorder

Fixes panic if no upstream handler wrote anything to the response
This commit is contained in:
Matthew Holt 2020-01-08 18:37:41 -07:00
parent 21f1f95e7b
commit 8bae8f5f5a
No known key found for this signature in database
GPG Key ID: 2A349DD577D586A5
1 changed files with 5 additions and 0 deletions

View File

@ -225,6 +225,11 @@ func (rr *responseRecorder) WriteResponse() error {
return nil
}
CopyHeader(rr.ResponseWriterWrapper.Header(), rr.header)
if rr.statusCode == 0 {
// could happen if no handlers actually wrote anything,
// and this prevents a panic; status must be > 0
rr.statusCode = http.StatusOK
}
rr.ResponseWriterWrapper.WriteHeader(rr.statusCode)
_, err := io.Copy(rr.ResponseWriterWrapper, rr.buf)
return err