From 349457cc1b386e92b348846a354807d6ceeb81df Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Wed, 18 Nov 2020 16:14:50 -0700 Subject: [PATCH] caddyhttp: Return error if error handling error Before, if there was an error in the error handler, we would not write a status code, which resulted in Go writing a 200 for us by default, which does not make sense when there's an error. Now we write the second error's status if available, otherwise 500. --- modules/caddyhttp/server.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/caddyhttp/server.go b/modules/caddyhttp/server.go index d5be1e1c..cff0f2ee 100644 --- a/modules/caddyhttp/server.go +++ b/modules/caddyhttp/server.go @@ -247,6 +247,11 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { zap.String("msg", errMsg), }, errFields...) logger.Error("error handling handler error", errFields...) + if handlerErr, ok := err.(HandlerError); ok { + w.WriteHeader(handlerErr.StatusCode) + } else { + w.WriteHeader(http.StatusInternalServerError) + } } } else { if errStatus >= 500 {