summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Routhier <sar@isc.org>2012-10-09 13:40:40 -0700
committerShawn Routhier <sar@isc.org>2012-10-09 13:40:40 -0700
commitdee12e99a067e733f0db1a9541cd8d08f638ee55 (patch)
treed1955dcf05f4371b27f74ba760c8bd2de2a0ccaa
parent6075861eacee14052f6cd755000b4dc6073c0c20 (diff)
downloadisc-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--RELNOTES7
-rw-r--r--common/dns.c16
2 files changed, 11 insertions, 12 deletions
diff --git a/RELNOTES b/RELNOTES
index 14912a05..0f472ba8 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -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,