diff options
author | 2016-10-18 00:04:18 +0800 | |
---|---|---|
committer | 2016-10-17 17:04:18 +0100 | |
commit | 2eafe3ee94bc4b1e94000bc74f8ee524132ae27c (patch) | |
tree | b8adfabba09955a93f78a46733a991d88bc7225f /middleware/file/setup.go | |
parent | 58387afd5d2b4add476e3b035c437aa26cdf3424 (diff) | |
download | coredns-2eafe3ee94bc4b1e94000bc74f8ee524132ae27c.tar.gz coredns-2eafe3ee94bc4b1e94000bc74f8ee524132ae27c.tar.zst coredns-2eafe3ee94bc4b1e94000bc74f8ee524132ae27c.zip |
Fix files reload failure within a single root zone. (#337)
In the file middleware, if there are multiple zone files under a single root zone, watchers are only invoked on the last element of `zones.Names`. This is caused by loop override on the variable `n`.
This issue can be fixed by passing zone object, which calls reload watcher directly.
Diffstat (limited to 'middleware/file/setup.go')
-rw-r--r-- | middleware/file/setup.go | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/middleware/file/setup.go b/middleware/file/setup.go index 95e3209f4..a73fa50b1 100644 --- a/middleware/file/setup.go +++ b/middleware/file/setup.go @@ -27,12 +27,13 @@ func setup(c *caddy.Controller) error { // Add startup functions to notify the master(s). for _, n := range zones.Names { + z := zones.Z[n] c.OnStartup(func() error { - zones.Z[n].StartupOnce.Do(func() { - if len(zones.Z[n].TransferTo) > 0 { - zones.Z[n].Notify() + z.StartupOnce.Do(func() { + if len(z.TransferTo) > 0 { + z.Notify() } - zones.Z[n].Reload(nil) + z.Reload(nil) }) return nil }) |