mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-23 22:27:38 -05:00
OncePerServerBlock may now return an error
This commit is contained in:
parent
fc413e2403
commit
f978967e5e
3 changed files with 16 additions and 8 deletions
|
@ -66,9 +66,15 @@ func Load(filename string, input io.Reader) (Group, error) {
|
||||||
// server config and the dispenser containing only
|
// server config and the dispenser containing only
|
||||||
// this directive's tokens.
|
// this directive's tokens.
|
||||||
controller := &setup.Controller{
|
controller := &setup.Controller{
|
||||||
Config: &config,
|
Config: &config,
|
||||||
Dispenser: parse.NewDispenserTokens(filename, tokens),
|
Dispenser: parse.NewDispenserTokens(filename, tokens),
|
||||||
OncePerServerBlock: func(f func()) { onces[dir.name].Do(f) },
|
OncePerServerBlock: func(f func() error) error {
|
||||||
|
var err error
|
||||||
|
onces[dir.name].Do(func() {
|
||||||
|
err = f()
|
||||||
|
})
|
||||||
|
return err
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
midware, err := dir.setup(controller)
|
midware, err := dir.setup(controller)
|
||||||
|
|
|
@ -19,8 +19,11 @@ type Controller struct {
|
||||||
|
|
||||||
// OncePerServerBlock is a function that executes f
|
// OncePerServerBlock is a function that executes f
|
||||||
// exactly once per server block, no matter how many
|
// exactly once per server block, no matter how many
|
||||||
// hosts are associated with it.
|
// hosts are associated with it. If it is the first
|
||||||
OncePerServerBlock func(f func())
|
// time, the function f is executed immediately
|
||||||
|
// (not deferred) and may return an error which is
|
||||||
|
// returned by OncePerServerBlock.
|
||||||
|
OncePerServerBlock func(f func() error) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewTestController creates a new *Controller for
|
// NewTestController creates a new *Controller for
|
||||||
|
|
|
@ -55,9 +55,8 @@ func registerCallback(c *Controller, list *[]func() error) error {
|
||||||
funcs = append(funcs, fn)
|
funcs = append(funcs, fn)
|
||||||
}
|
}
|
||||||
|
|
||||||
c.OncePerServerBlock(func() {
|
return c.OncePerServerBlock(func() error {
|
||||||
*list = append(*list, funcs...)
|
*list = append(*list, funcs...)
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue