]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
[master]
authorShawn Routhier <sar@isc.org>
Tue, 9 Oct 2012 20:28:14 +0000 (13:28 -0700)
committerShawn Routhier <sar@isc.org>
Tue, 9 Oct 2012 20:28:14 +0000 (13:28 -0700)
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]

RELNOTES
common/dns.c

index 400b6dca883ae7ffb668a4fa5f304f3d535918ba..7d70f11637db91504c4b11a58f430136a81878f2 100644 (file)
--- a/RELNOTES
+++ b/RELNOTES
@@ -120,6 +120,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.3
 
 ! Add a check for a null pointer before calling the regexec function.
index 53e85a4f278cd76f8bcf34d12cc78c19fc37edc9..cd73eeb11c9db4a30ea0f06136999c5cc795cc90 100644 (file)
@@ -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,