sockets will be handled after the first return from select(), resulting in
fewer system calls.
+- The update-conflict-detection feature would leave an FQDN updated without
+ a DHCID (still currently implemented as a TXT RR). This would cause later
+ expiration or release events to fail to remove the domain name. The feature
+ now also inserts the client's up to date DHCID record, so records may safely
+ be removed at expiration or release time. Thanks to a patch submitted by
+ Christof Chen.
+
Changes since 4.1.0b1
- A missing "else" in dhcrelay.c could have caused an interface not to
updrec->r_opcode = DELETE;
ISC_LIST_APPEND(updqueue, updrec, r_link);
+
+
+ /*
+ * With all other DHCID RR's deleted, add this client's
+ * DHCID unconditionally (as update-conflict-detection is
+ * disabled).
+ */
+ updrec = minires_mkupdrec(S_UPDATE,
+ (const char *)ddns_fwd_name->data,
+ C_IN, T_DHCID, ttl);
+ if (!updrec) {
+ result = ISC_R_NOMEMORY;
+ goto error;
+ }
+
+ updrec->r_data = ddns_dhcid->data;
+ updrec->r_size = ddns_dhcid->len;
+ updrec->r_opcode = ADD;
+
+ ISC_LIST_APPEND (updqueue, updrec, r_link);
}