mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
deleting the last NS should always succeed when not at the zone apex
This commit is contained in:
parent
6eccd75f1f
commit
1a3d6530f6
@ -2188,20 +2188,29 @@ update_action(isc_task_t *task, isc_event_t *event)
|
||||
&diff));
|
||||
}
|
||||
} else if (update_class == dns_rdataclass_none) {
|
||||
if (rdata.type == dns_rdatatype_soa) {
|
||||
isc_log_write(UPDATE_PROTOCOL_LOGARGS,
|
||||
"attempt to delete SOA ignored");
|
||||
continue;
|
||||
}
|
||||
if (rdata.type == dns_rdatatype_ns) {
|
||||
int count;
|
||||
CHECK(rr_count(db, ver, name,
|
||||
dns_rdatatype_ns, 0, &count));
|
||||
if (count == 1) {
|
||||
/*
|
||||
* The (name == zonename) condition appears in
|
||||
* RFC2136 3.4.2.4 but is missing from the pseudocode.
|
||||
*/
|
||||
if (dns_name_equal(name, zonename)) {
|
||||
if (rdata.type == dns_rdatatype_soa) {
|
||||
isc_log_write(UPDATE_PROTOCOL_LOGARGS,
|
||||
"attempt to delete SOA "
|
||||
"ignored");
|
||||
continue;
|
||||
}
|
||||
if (rdata.type == dns_rdatatype_ns) {
|
||||
int count;
|
||||
CHECK(rr_count(db, ver, name,
|
||||
dns_rdatatype_ns,
|
||||
0, &count));
|
||||
if (count == 1) {
|
||||
isc_log_write(
|
||||
UPDATE_PROTOCOL_LOGARGS,
|
||||
"attempt to delete last "
|
||||
"NS ignored");
|
||||
continue;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
isc_log_write(UPDATE_PROTOCOL_LOGARGS,
|
||||
|
Loading…
x
Reference in New Issue
Block a user