aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugin/file/xfr_test.go9
-rw-r--r--plugin/file/zone.go10
2 files changed, 17 insertions, 2 deletions
diff --git a/plugin/file/xfr_test.go b/plugin/file/xfr_test.go
index 69ad68e64..c02575556 100644
--- a/plugin/file/xfr_test.go
+++ b/plugin/file/xfr_test.go
@@ -3,6 +3,7 @@ package file
import (
"fmt"
"strings"
+ "testing"
)
func ExampleZone_All() {
@@ -32,3 +33,11 @@ func ExampleZone_All() {
// xfr_test.go:15: a.miek.nl. 1800 IN A 139.162.196.78
// xfr_test.go:15: a.miek.nl. 1800 IN AAAA 2a01:7e00::f03c:91ff:fef1:6735
}
+
+func TestAllNewZone(t *testing.T) {
+ zone := NewZone("example.org.", "stdin")
+ records := zone.All()
+ if len(records) != 0 {
+ t.Errorf("Expected %d records in empty zone, got %d", 0, len(records))
+ }
+}
diff --git a/plugin/file/zone.go b/plugin/file/zone.go
index 186fdf8d0..3eb99ef66 100644
--- a/plugin/file/zone.go
+++ b/plugin/file/zone.go
@@ -173,15 +173,21 @@ func (z *Zone) All() []dns.RR {
records = append(records, a.All()...)
}
+ // Either the entire Apex is filled or none it, this isn't enforced here though.
if len(z.Apex.SIGNS) > 0 {
records = append(z.Apex.SIGNS, records...)
}
- records = append(z.Apex.NS, records...)
+ if len(z.Apex.NS) > 0 {
+ records = append(z.Apex.NS, records...)
+ }
if len(z.Apex.SIGSOA) > 0 {
records = append(z.Apex.SIGSOA, records...)
}
- return append([]dns.RR{z.Apex.SOA}, records...)
+ if z.Apex.SOA != nil {
+ return append([]dns.RR{z.Apex.SOA}, records...)
+ }
+ return records
}
// NameFromRight returns the labels from the right, staring with the