diff options
author | 2017-08-05 01:36:11 -0700 | |
---|---|---|
committer | 2017-08-05 01:36:11 -0700 | |
commit | a235833be8b77cfa5a7a6be033c383f74066b794 (patch) | |
tree | e50fb205ae73746758d6cb9bf7a046be0aed4fc3 | |
parent | b11cf7c2bc1d7136755e81f104ddde1748f510cd (diff) | |
download | coredns-a235833be8b77cfa5a7a6be033c383f74066b794.tar.gz coredns-a235833be8b77cfa5a7a6be033c383f74066b794.tar.zst coredns-a235833be8b77cfa5a7a6be033c383f74066b794.zip |
middleware/secondary: pull all zones (#834)
Use the same OnStartup setup as in the file middleware. We need to copy
the variable from range, otherwise it gets overwriten in the next loop
because of the async goroutine call.
Hard to test, we have secondary_test.go which we could extend with
multiple zones for instance. For now this fix does not have an test case
with it...
-rw-r--r-- | middleware/secondary/setup.go | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/middleware/secondary/setup.go b/middleware/secondary/setup.go index 901e76699..e6bc3858a 100644 --- a/middleware/secondary/setup.go +++ b/middleware/secondary/setup.go @@ -25,12 +25,13 @@ func setup(c *caddy.Controller) error { // Add startup functions to retrieve the zone and keep it up to date. for _, n := range zones.Names { - if len(zones.Z[n].TransferFrom) > 0 { + z := zones.Z[n] + if len(z.TransferFrom) > 0 { c.OnStartup(func() error { - zones.Z[n].StartupOnce.Do(func() { - zones.Z[n].TransferIn() + z.StartupOnce.Do(func() { + z.TransferIn() go func() { - zones.Z[n].Update() + z.Update() }() }) return nil |