diff options
author | Matthew Holt <mholt@users.noreply.github.com> | 2020-01-11 00:33:47 -0700 |
---|---|---|
committer | Matthew Holt <mholt@users.noreply.github.com> | 2020-01-11 00:33:47 -0700 |
commit | 8be1f0ea668492000cdefbd937e0359bdc24bfc1 (patch) | |
tree | 0f470cf3d357bcaec6d70d47f11bd83bb636a096 /modules/caddyhttp | |
parent | 2eda21ec6d44fa2f57e72ef0f02ea29c902d871d (diff) |
http: Ensure primary routes always get compiled (fix #2972)
Including servers for HTTP->HTTPS redirects which do not get provisioned
like the rest.
Diffstat (limited to 'modules/caddyhttp')
-rw-r--r-- | modules/caddyhttp/caddyhttp.go | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/modules/caddyhttp/caddyhttp.go b/modules/caddyhttp/caddyhttp.go index ab217cb..7381e51 100644 --- a/modules/caddyhttp/caddyhttp.go +++ b/modules/caddyhttp/caddyhttp.go @@ -164,6 +164,7 @@ func (app *App) Provision(ctx caddy.Context) error { srv.Listen[i] = lnOut } + primaryRoute := emptyHandler if srv.Routes != nil { err := srv.Routes.Provision(ctx) if err != nil { @@ -171,8 +172,9 @@ func (app *App) Provision(ctx caddy.Context) error { } // pre-compile the handler chain, and be sure to wrap it in our // route handler so that important security checks are done, etc. - srv.primaryHandlerChain = srv.wrapPrimaryRoute(srv.Routes.Compile()) + srv.primaryHandlerChain = srv.Routes.Compile() } + srv.primaryHandlerChain = srv.wrapPrimaryRoute(primaryRoute) if srv.Errors != nil { err := srv.Errors.Routes.Provision(ctx) @@ -504,7 +506,7 @@ func (app *App) automaticHTTPS() error { // if there are HTTP->HTTPS redirects to add, do so now if len(lnAddrRedirRoutes) > 0 { var redirServerAddrs []string - var redirRoutes []Route + var redirRoutes RouteList // for each redirect listener, see if there's already a // server configured to listen on that exact address; if so, @@ -539,11 +541,12 @@ func (app *App) automaticHTTPS() error { // rest of the redirects if len(redirServerAddrs) > 0 { app.Servers["remaining_auto_https_redirects"] = &Server{ - Listen: redirServerAddrs, - Routes: redirRoutes, - tlsApp: tlsApp, // required to solve HTTP challenge - logger: app.logger.Named("log"), - errorLogger: app.logger.Named("log.error"), + Listen: redirServerAddrs, + Routes: redirRoutes, + tlsApp: tlsApp, // required to solve HTTP challenge + logger: app.logger.Named("log"), + errorLogger: app.logger.Named("log.error"), + primaryHandlerChain: redirRoutes.Compile(), } } } |