}
}
+static void
+mark_ancient(dns_slabheader_t *header) {
+ setttl(header, 0);
+ mark(header, DNS_SLABHEADERATTR_ANCIENT);
+ HEADERNODE(header)->dirty = 1;
+}
+
/*
* Caller must hold the node (write) lock.
*/
static void
expireheader(dns_slabheader_t *header, isc_rwlocktype_t *nlocktypep,
isc_rwlocktype_t *tlocktypep, dns_expire_t reason DNS__DB_FLARG) {
- setttl(header, 0);
- mark(header, DNS_SLABHEADERATTR_ANCIENT);
- HEADERNODE(header)->dirty = 1;
+ mark_ancient(header);
if (isc_refcount_current(&HEADERNODE(header)->erefs) == 0) {
qpcache_t *qpdb = (qpcache_t *)header->db;
}
dns_slabheader_destroy(&header);
} else {
- mark(header, DNS_SLABHEADERATTR_ANCIENT);
- HEADERNODE(header)->dirty = 1;
+ mark_ancient(header);
*header_prev = header;
}
} else {
* non-zero. This is so because 'node' is an
* argument to the function.
*/
- mark(header, DNS_SLABHEADERATTR_ANCIENT);
- HEADERNODE(header)->dirty = 1;
+ mark_ancient(header);
}
} else if (EXISTS(header) && !ANCIENT(header)) {
if (header->type == matchtype) {
qpcache_detach(&qpdb);
}
-static void
-mark_ancient(dns_slabheader_t *header) {
- setttl(header, 0);
- mark(header, DNS_SLABHEADERATTR_ANCIENT);
- HEADERNODE(header)->dirty = 1;
-}
-
/*%
* Clean up dead nodes. These are nodes which have no references, and
* have no data. They are dead but we could not or chose not to delete
newheader->next = topheader->next;
newheader->down = topheader;
topheader->next = newheader;
- qpnode->dirty = 1;
mark_ancient(header);
if (sigheader != NULL) {
mark_ancient(sigheader);