#define cache_findrdataset cache_findrdataset64
#define cache_findzonecut cache_findzonecut64
#define cache_zonecut_callback cache_zonecut_callback64
-#define check_stale_rdataset check_stale_rdataset64
+#define check_stale_header check_stale_header64
#define cleanup_dead_nodes cleanup_dead_nodes64
#define cleanup_dead_nodes_callback cleanup_dead_nodes_callback64
#define closeversion closeversion64
}
static isc_boolean_t
-check_stale_rdataset(dns_rbtnode_t *node, rdatasetheader_t *header,
- isc_rwlocktype_t *locktype, nodelock_t *lock,
- rbtdb_search_t *search, rdatasetheader_t **header_prev)
+check_stale_header(dns_rbtnode_t *node, rdatasetheader_t *header,
+ isc_rwlocktype_t *locktype, nodelock_t *lock,
+ rbtdb_search_t *search, rdatasetheader_t **header_prev)
{
#if !defined(ISC_RWLOCK_USEATOMIC) || !defined(DNS_RBT_USEISCREFCOUNT)
header_prev = NULL;
for (header = node->data; header != NULL; header = header_next) {
header_next = header->next;
- if (check_stale_rdataset(node, header,
- &locktype, lock, search,
- &header_prev)) {
+ if (check_stale_header(node, header,
+ &locktype, lock, search,
+ &header_prev)) {
/* Do nothing. */
} else if (header->type == dns_rdatatype_dname &&
EXISTS(header)) {
header_prev = NULL;
for (header = node->data; header != NULL; header = header_next) {
header_next = header->next;
- if (check_stale_rdataset(node, header,
- &locktype, lock, search,
- &header_prev)) {
+ if (check_stale_header(node, header,
+ &locktype, lock, search,
+ &header_prev)) {
/* Do nothing. */
} else if (EXISTS(header)) {
/*
header_prev = NULL;
for (header = node->data; header != NULL; header = header_next) {
header_next = header->next;
- if (check_stale_rdataset(node, header,
- &locktype, lock, search,
- &header_prev)) {
+ if (check_stale_header(node, header,
+ &locktype, lock, search,
+ &header_prev)) {
continue;
}
if (NONEXISTENT(header) ||
header_prev = NULL;
for (header = node->data; header != NULL; header = header_next) {
header_next = header->next;
- if (check_stale_rdataset(node, header,
- &locktype, lock, &search,
- &header_prev)) {
+ if (check_stale_header(node, header,
+ &locktype, lock, &search,
+ &header_prev)) {
/* Do nothing. */
- } else if (EXISTS(header)) {
+ } else if (EXISTS(header) && (!STALE(header))) {
/*
* We now know that there is at least one active
* non-stale rdataset at this node.
header_prev = NULL;
for (header = node->data; header != NULL; header = header_next) {
header_next = header->next;
- if (check_stale_rdataset(node, header,
- &locktype, lock, &search,
- &header_prev)) {
+ if (check_stale_header(node, header,
+ &locktype, lock, &search,
+ &header_prev)) {
/* Do nothing. */
} else if (EXISTS(header)) {
/*
*/
mark_stale_header(rbtdb, header);
}
- } else if (EXISTS(header)) {
+ } else if (EXISTS(header) && (!STALE(header))) {
if (header->type == matchtype)
found = header;
else if (header->type == RBTDB_RDATATYPE_NCACHEANY ||