diff options
Diffstat (limited to 'plugin/ready/setup.go')
-rw-r--r-- | plugin/ready/setup.go | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/plugin/ready/setup.go b/plugin/ready/setup.go index 64967dbd4..7cf286b3d 100644 --- a/plugin/ready/setup.go +++ b/plugin/ready/setup.go @@ -21,22 +21,25 @@ func setup(c *caddy.Controller) error { if err != nil { return plugin.Error("ready", err) } - rd := &ready{Addr: addr} uniqAddr.Set(addr, rd.onStartup) + c.OnStartup(func() error { uniqAddr.Set(addr, rd.onStartup); return nil }) + c.OnRestartFailed(func() error { uniqAddr.Set(addr, rd.onStartup); return nil }) - c.OncePerServerBlock(func() error { - c.OnStartup(func() error { - return uniqAddr.ForEach() - }) - return nil - }) + c.OnStartup(func() error { return uniqAddr.ForEach() }) + c.OnRestartFailed(func() error { return uniqAddr.ForEach() }) c.OnStartup(func() error { - // Each plugin in this server block will (if they support it) report readiness. - plugs := dnsserver.GetConfig(c).Handlers() - for _, p := range plugs { + for _, p := range dnsserver.GetConfig(c).Handlers() { + if r, ok := p.(Readiness); ok { + plugins.Append(r, p.Name()) + } + } + return nil + }) + c.OnRestartFailed(func() error { + for _, p := range dnsserver.GetConfig(c).Handlers() { if r, ok := p.(Readiness); ok { plugins.Append(r, p.Name()) } @@ -44,14 +47,14 @@ func setup(c *caddy.Controller) error { return nil }) - c.OnRestart(rd.onRestart) + c.OnRestart(rd.onFinalShutdown) c.OnFinalShutdown(rd.onFinalShutdown) return nil } func parse(c *caddy.Controller) (string, error) { - addr := "" + addr := ":8181" i := 0 for c.Next() { if i > 0 { |