From 8bae8f5f5a4e8dd7bf805093b320aadb752432d2 Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Wed, 8 Jan 2020 18:37:41 -0700 Subject: http: Always set status code via response recorder Fixes panic if no upstream handler wrote anything to the response --- modules/caddyhttp/responsewriter.go | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'modules/caddyhttp/responsewriter.go') diff --git a/modules/caddyhttp/responsewriter.go b/modules/caddyhttp/responsewriter.go index dd16ce7..a4ea1db 100644 --- a/modules/caddyhttp/responsewriter.go +++ b/modules/caddyhttp/responsewriter.go @@ -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 -- cgit v1.2.3