aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMatthew Holt <[email protected]>2024-05-22 18:47:03 -0600
committerMatthew Holt <[email protected]>2024-05-22 18:47:03 -0600
commit2ce5c6526938b604586c987fa3d31117721e40a6 (patch)
tree17390ca92b2830874de0831db059563dfc068b71
parent61917c34434204ae676411d41facffa7c7633d3a (diff)
downloadcaddy-2ce5c6526938b604586c987fa3d31117721e40a6.tar.gz
caddy-2ce5c6526938b604586c987fa3d31117721e40a6.zip
core: Fix bug in AppIfConfigured (fix #6336)
-rw-r--r--context.go13
1 files changed, 10 insertions, 3 deletions
diff --git a/context.go b/context.go
index 53d94a524..5b8c10703 100644
--- a/context.go
+++ b/context.go
@@ -455,20 +455,27 @@ func (ctx Context) App(name string) (any, error) {
// AppIfConfigured is like App, but it returns an error if the
// app has not been configured. This is useful when the app is
-// required and its absence is a configuration error, or when
+// required and its absence is a configuration error; or when
// the app is optional and you don't want to instantiate a
-// new one that hasn't been explicitly configured.
+// new one that hasn't been explicitly configured. If the app
+// is not in the configuration, the error wraps ErrNotConfigured.
func (ctx Context) AppIfConfigured(name string) (any, error) {
+ if ctx.cfg == nil {
+ return nil, fmt.Errorf("app module %s: %w", name, ErrNotConfigured)
+ }
if app, ok := ctx.cfg.apps[name]; ok {
return app, nil
}
appRaw := ctx.cfg.AppsRaw[name]
if appRaw == nil {
- return nil, fmt.Errorf("app module %s is not configured", name)
+ return nil, fmt.Errorf("app module %s: %w", name, ErrNotConfigured)
}
return ctx.App(name)
}
+// ErrNotConfigured indicates a module is not configured.
+var ErrNotConfigured = fmt.Errorf("module not configured")
+
// Storage returns the configured Caddy storage implementation.
func (ctx Context) Storage() certmagic.Storage {
return ctx.cfg.storage