diff --git a/plugin/file/setup.go b/plugin/file/setup.go index 95e5d729a..73a2a233e 100644 --- a/plugin/file/setup.go +++ b/plugin/file/setup.go @@ -93,17 +93,26 @@ func fileParse(c *caddy.Controller) (Zones, error) { openErr = err } - for i := range origins { - z[origins[i]] = NewZone(origins[i], fileName) - if openErr == nil { - reader.Seek(0, 0) - zone, err := Parse(reader, origins[i], fileName, 0) - if err != nil { - return Zones{}, err + err = func() error { + defer reader.Close() + + for i := range origins { + z[origins[i]] = NewZone(origins[i], fileName) + if openErr == nil { + reader.Seek(0, 0) + zone, err := Parse(reader, origins[i], fileName, 0) + if err != nil { + return err + } + z[origins[i]] = zone } - z[origins[i]] = zone + names = append(names, origins[i]) } - names = append(names, origins[i]) + return nil + }() + + if err != nil { + return Zones{}, err } for c.NextBlock() {