aboutsummaryrefslogtreecommitdiff
path: root/plugin/file/file.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--plugin/file/file.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/plugin/file/file.go b/plugin/file/file.go
index 5c13042cb..2711282eb 100644
--- a/plugin/file/file.go
+++ b/plugin/file/file.go
@@ -121,6 +121,12 @@ func (s *serialErr) Error() string {
// it returns an error indicating nothing was read.
func Parse(f io.Reader, origin, fileName string, serial int64) (*Zone, error) {
tokens := dns.ParseZone(f, dns.Fqdn(origin), fileName)
+ defer func() {
+ // Drain the tokens chan so that large zone files won't
+ // leak goroutines and memory.
+ for range tokens {
+ }
+ }()
z := NewZone(origin, fileName)
seenSOA := false
for x := range tokens {