* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: rbtdb.c,v 1.286 2009/11/06 03:26:59 each Exp $ */
+/* $Id: rbtdb.c,v 1.287 2009/11/12 02:59:20 each Exp $ */
/*! \file */
}
static inline isc_result_t
-previous_close_nsec(dns_rdatatype_t type, rbtdb_search_t *search,
+previous_closest_nsec(dns_rdatatype_t type, rbtdb_search_t *search,
dns_name_t *name, dns_name_t *origin,
dns_rbtnode_t **nodep, dns_rbtnodechain_t *nsecchain,
isc_boolean_t *firstp)
* records. Perhaps they lacked signature records.
*/
result = dns_rbtnodechain_prev(nsecchain, name, origin);
+ if (result == DNS_R_NEWORIGIN)
+ result = ISC_R_NOTFOUND;
if (result != ISC_R_SUCCESS)
return (result);
}
* same name as the node in the auxiliary NSEC tree, except for
* nodes in the auxiliary tree that are awaiting deletion.
*/
+ if (result == DNS_R_PARTIALMATCH)
+ result = ISC_R_NOTFOUND;
+
if (result != ISC_R_NOTFOUND) {
isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
DNS_LOGMODULE_CACHE, ISC_LOG_ERROR,
* node as if it were empty and keep looking.
*/
empty_node = ISC_TRUE;
- result = previous_close_nsec(type, search,
+ result = previous_closest_nsec(type, search,
name, origin, &prevnode,
&nsecchain, &first);
} else {
* This node isn't active. We've got to keep
* looking.
*/
- result = previous_close_nsec(type, search,
- name, origin, &prevnode,
- &nsecchain, &first);
+ result = previous_closest_nsec(type, search,
+ name, origin, &prevnode,
+ &nsecchain, &first);
}
NODE_UNLOCK(&(search->rbtdb->node_locks[node->locknum].lock),
isc_rwlocktype_read);