diff options
author | Shawn Routhier <sar@isc.org> | 2012-10-09 13:40:40 -0700 |
---|---|---|
committer | Shawn Routhier <sar@isc.org> | 2012-10-09 13:40:40 -0700 |
commit | dee12e99a067e733f0db1a9541cd8d08f638ee55 (patch) | |
tree | d1955dcf05f4371b27f74ba760c8bd2de2a0ccaa | |
parent | 6075861eacee14052f6cd755000b4dc6073c0c20 (diff) | |
download | isc-dhcp-dee12e99a067e733f0db1a9541cd8d08f638ee55.tar.gz |
[v4_2]
[ISC-Bugs #30734]
Relax the requirements for deleting an A or AAAA record.
Previously the DDNS removal code required both the A or AAAA
record and the TXT record to exist. This requirement could
cause problems if something interrupted the removal leaving
the TXT record alone. This relaxation was codified in RFC 4703.
-rw-r--r-- | RELNOTES | 7 | ||||
-rw-r--r-- | common/dns.c | 16 |
2 files changed, 11 insertions, 12 deletions
@@ -101,6 +101,13 @@ work on other platforms. Please report any problems and suggested fixes to - Update the memory leakage debug code to work with v6. [ISC-Bugs #30297] +- Relax the requirements for deleting an A or AAAA record. + Previously the DDNS removal code required both the A or AAAA + record and the TXT record to exist. This requirement could + cause problems if something interrupted the removal leaving + the TXT record alone. This relaxation was codified in RFC 4703. + [ISC-Bugs #30734] + Changes since 4.2.4rc2 - None diff --git a/common/dns.c b/common/dns.c index 53e85a4f..cd73eeb1 100644 --- a/common/dns.c +++ b/common/dns.c @@ -1186,9 +1186,12 @@ ddns_modify_fwd_add2(dhcp_ddns_cb_t *ddns_cb, * expired or been released. * -- "Interaction between DHCP and DNS" * + * RFC 4703 has relaxed the prereqisites to only checking the DHCID RR + * and we have adopted that to minizmie problems due to interruptions + * when doing a deletion. + * * First try has: * DHCID RR exists, and matches client identity. - * A RR matches the expiring lease. * Delete appropriate A RR. */ @@ -1212,17 +1215,6 @@ ddns_modify_fwd_rem1(dhcp_ddns_cb_t *ddns_cb, ISC_LIST_APPEND(pname->list, &dataspace->rdataset, link); dataspace++; - /* The A RR matches the expiring lease */ - result = make_dns_dataset(dns_rdataclass_in, ddns_cb->address_type, - dataspace, - (unsigned char *)ddns_cb->address.iabuf, - ddns_cb->address.len, 0); - if (result != ISC_R_SUCCESS) { - return(result); - } - ISC_LIST_APPEND(pname->list, &dataspace->rdataset, link); - dataspace++; - /* Construct the update list */ /* Delete A RRset */ result = make_dns_dataset(dns_rdataclass_none, ddns_cb->address_type, |