diff --git a/parse_test.go b/parse_test.go index e77af257..0e312106 100644 --- a/parse_test.go +++ b/parse_test.go @@ -182,6 +182,11 @@ z2.miek.nl. IN NSEC miek.nl. TXT RRSIG NSEC` t.Log("Not all names correct") t.Fail() } + z.RemoveName("z2.miek.nl.") + if z.sortedNames[0] != "z1.miek.nl." || z.sortedNames[1] != "z3.miek.nl." { + t.Logf("Not all names correct %v\n", z.sortedNames) + t.Fail() + } } func TestDomainName(t *testing.T) { diff --git a/zone.go b/zone.go index ac686cf9..dd784931 100644 --- a/zone.go +++ b/zone.go @@ -284,6 +284,13 @@ func (z *Zone) RemoveName(s string) error { z.ModTime = time.Now().UTC() defer z.Unlock() delete(z.Names, s) + i := sort.SearchStrings(z.sortedNames, s) + if z.sortedNames[i] == s { + copy(z.sortedNames[i:], z.sortedNames[i+1:]) + z.sortedNames[len(z.sortedNames)-1] = "" + z.sortedNames = z.sortedNames[:len(z.sortedNames)-1] + } + if len(s) > 1 && s[0] == '*' && s[1] == '.' { z.Wildcard-- if z.Wildcard < 0 {