0
Fork 0
mirror of https://github.com/caddyserver/caddy.git synced 2024-12-23 22:27:38 -05:00

errors: Pointer to handler prevents nil pointer errors in handling (fixes #15)

If we do not use a pointer here, the startup function that opens the log file stores the log file in a copy of the handler, not the same instance of the handler, causing panics during requests, which is bad, especially when the response is gzipped: the next recover() is beyond the gzip handler, so the browser downloads a gz file instead.
This commit is contained in:
Matthew Holt 2015-04-30 10:16:49 -06:00
parent b1e1caba29
commit 9dfbbbcda4

View file

@ -113,8 +113,11 @@ func (h ErrorHandler) errorPage(w http.ResponseWriter, code int) {
http.Error(w, defaultBody, code)
}
func parse(c middleware.Controller) (ErrorHandler, error) {
handler := ErrorHandler{ErrorPages: make(map[int]string)}
func parse(c middleware.Controller) (*ErrorHandler, error) {
// Very important that we make a pointer because the Startup
// function that opens the log file must have access to the
// same instance of the handler, not a copy.
handler := &ErrorHandler{ErrorPages: make(map[int]string)}
optionalBlock := func() (bool, error) {
var hadBlock bool