Browse Source

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.
master
Matthew Holt 4 years ago
parent
commit
349457cc1b
No known key found for this signature in database GPG Key ID: 2A349DD577D586A5
  1. 5
      modules/caddyhttp/server.go

5
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 {

Loading…
Cancel
Save