#define HEADERNODE(h) ((qpznode_t *)((h)->node))
+/* Forward declaration */
+static void deletedata(dns_dbnode_t *node, void *data);
+
#define QPDB_ATTR_LOADED 0x01
#define QPDB_ATTR_LOADING 0x02
if (header->serial == parent_serial || IGNORE(header)) {
ISC_SLIST_PTR_REMOVE(p, header, next_header);
+ deletedata(header->node, header);
dns_vecheader_destroy(&header);
} else {
parent_serial = header->serial;
dns_vecheader_t *header = *p;
if (header->serial < least_serial) {
ISC_SLIST_PTR_REMOVE(p, header, next_header);
+ deletedata(header->node, header);
dns_vecheader_destroy(&header);
} else {
multiple = true;
* alone. It will get cleaned up when
* clean_zone_node() runs.
*/
+ deletedata(newheader->node, newheader);
dns_vecheader_destroy(&newheader);
newheader = merged;
dns_vecheader_reset(newheader,
header->typepair),
"updating", qpdb->maxrrperset);
}
+ deletedata(newheader->node, newheader);
dns_vecheader_destroy(&newheader);
return result;
}
maybe_update_recordsandsize(false, version, header,
nodename->length);
+ deletedata(header->node, header);
dns_vecheader_destroy(&header);
} else {
if (RESIGN(newheader)) {
* If we're trying to delete the type, don't bother.
*/
if (!EXISTS(newheader)) {
+ deletedata(newheader->node, newheader);
dns_vecheader_destroy(&newheader);
return DNS_R_UNCHANGED;
}
if (qpdb->maxtypepername > 0 &&
ntypes >= qpdb->maxtypepername)
{
+ deletedata(newheader->node, newheader);
dns_vecheader_destroy(&newheader);
return DNS_R_TOOMANYRECORDS;
}
&subresult);
}
if (result == ISC_R_SUCCESS) {
+ deletedata(newheader->node, newheader);
dns_vecheader_destroy(&newheader);
newheader = subresult;
dns_vecheader_reset(newheader, (dns_dbnode_t *)node);
* This subtraction would remove all of the rdata;
* add a nonexistent header instead.
*/
+ deletedata(newheader->node, newheader);
dns_vecheader_destroy(&newheader);
newheader = dns_vecheader_new(db->mctx,
(dns_dbnode_t *)node);
DNS_VECHEADERATTR_NONEXISTENT);
newheader->serial = version->serial;
} else {
+ deletedata(newheader->node, newheader);
dns_vecheader_destroy(&newheader);
goto unlock;
}
* The rdataset doesn't exist, so we don't need to do anything
* to satisfy the deletion request.
*/
+ deletedata(newheader->node, newheader);
dns_vecheader_destroy(&newheader);
if ((options & DNS_DBSUB_EXACT) != 0) {
result = DNS_R_NOTEXACT;
destroy_qpznode(qpznode_t *node) {
ISC_SLIST_FOREACH(top, node->next_type, next_type) {
ISC_SLIST_FOREACH(header, top->headers, next_header) {
+ deletedata(header->node, header);
dns_vecheader_destroy(&header);
}