diff options
author | 2020-08-31 15:39:01 +0200 | |
---|---|---|
committer | 2020-08-31 06:39:01 -0700 | |
commit | 9e4a177d9f422583e68ade2404e598827b091263 (patch) | |
tree | b219a4ae6ac93da733971a52cfe5494abd0de30a /plugin/clouddns/setup.go | |
parent | c126e7fc11c25d0758a2f27cb9bdf2d966a71a76 (diff) | |
download | coredns-9e4a177d9f422583e68ade2404e598827b091263.tar.gz coredns-9e4a177d9f422583e68ade2404e598827b091263.tar.zst coredns-9e4a177d9f422583e68ade2404e598827b091263.zip |
clouddns,route53: fix lingering goroutines after restart (#4096)
Stop the context so the refresh loop terminates on restart.
Fixes: #3815
Signed-off-by: Miek Gieben <miek@miek.nl>
Diffstat (limited to 'plugin/clouddns/setup.go')
-rw-r--r-- | plugin/clouddns/setup.go | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/plugin/clouddns/setup.go b/plugin/clouddns/setup.go index 7de8efe89..3b6bcba5f 100644 --- a/plugin/clouddns/setup.go +++ b/plugin/clouddns/setup.go @@ -46,14 +46,14 @@ func setup(c *caddy.Controller) error { for i := 0; i < len(args); i++ { parts := strings.SplitN(args[i], ":", 3) if len(parts) != 3 { - return c.Errf("invalid zone '%s'", args[i]) + return plugin.Error("clouddns", c.Errf("invalid zone %q", args[i])) } dnsName, projectName, hostedZone := parts[0], parts[1], parts[2] if dnsName == "" || projectName == "" || hostedZone == "" { - return c.Errf("invalid zone '%s'", args[i]) + return plugin.Error("clouddns", c.Errf("invalid zone %q", args[i])) } if _, ok := keyPairs[args[i]]; ok { - return c.Errf("conflict zone '%s'", args[i]) + return plugin.Error("clouddns", c.Errf("conflict zone %q", args[i])) } keyPairs[args[i]] = struct{}{} @@ -64,18 +64,17 @@ func setup(c *caddy.Controller) error { for c.NextBlock() { switch c.Val() { case "upstream": - c.RemainingArgs() // eats args - // if filepath is provided in the Corefile use it to authenticate the dns client + c.RemainingArgs() case "credentials": if c.NextArg() { opt = option.WithCredentialsFile(c.Val()) } else { - return c.ArgErr() + return plugin.Error("clouddns", c.ArgErr()) } case "fallthrough": fall.SetZonesFromArgs(c.RemainingArgs()) default: - return c.Errf("unknown property '%s'", c.Val()) + return plugin.Error("clouddns", c.Errf("unknown property %q", c.Val())) } } @@ -87,18 +86,19 @@ func setup(c *caddy.Controller) error { h, err := New(ctx, client, keys, up) if err != nil { - return c.Errf("failed to create Cloud DNS plugin: %v", err) + return plugin.Error("clouddns", c.Errf("failed to create plugin: %v", err)) } h.Fall = fall if err := h.Run(ctx); err != nil { - return c.Errf("failed to initialize Cloud DNS plugin: %v", err) + return plugin.Error("clouddns", c.Errf("failed to initialize plugin: %v", err)) } dnsserver.GetConfig(c).AddPlugin(func(next plugin.Handler) plugin.Handler { h.Next = next return h }) + c.OnShutdown(func() error { ctx.Done(); return nil }) } return nil |