typedef struct qpdb_dbiterator {
dns_dbiterator_t common;
bool paused;
- bool new_origin;
isc_rwlocktype_t tree_locked;
isc_result_t result;
- dns_fixedname_t origin;
dns_fixedname_t fixed;
dns_name_t *name;
dns_qpiter_t iter;
* Extract predecessor from iterator.
*/
result = dns_qpiter_current(&iter, predecessor, NULL, NULL);
- if (result != ISC_R_SUCCESS && result != DNS_R_NEWORIGIN) {
+ if (result != ISC_R_SUCCESS) {
return (ISC_R_NOTFOUND);
}
qpdbiter->paused = true;
qpdbiter->tree_locked = isc_rwlocktype_none;
qpdbiter->result = ISC_R_SUCCESS;
- dns_fixedname_init(&qpdbiter->origin);
dns_fixedname_init(&qpdbiter->fixed);
qpdbiter->name = dns_fixedname_initname(&qpdbiter->fixed);
qpdbiter->node = NULL;
dns_qpiter_init(qpdb->nsec3, qpdbiter->current);
result = dns_qpiter_next(qpdbiter->current, qpdbiter->name,
(void **)&qpdbiter->node, NULL);
- if (result == ISC_R_SUCCESS || result == DNS_R_NEWORIGIN) {
+ if (result == ISC_R_SUCCESS) {
/* If we're in the NSEC3 tree, skip the origin */
if (QPDBITER_NSEC3_ORIGIN_NODE(qpdb, qpdbiter)) {
result = dns_qpiter_next(
UNREACHABLE();
}
- if (result == ISC_R_SUCCESS || result == DNS_R_NEWORIGIN) {
- qpdbiter->new_origin = true;
+ if (result == ISC_R_SUCCESS) {
reference_iter_node(qpdbiter DNS__DB_FLARG_PASS);
} else {
INSIST(result == ISC_R_NOMORE); /* The tree is empty. */
dns_qpiter_init(qpdb->nsec3, qpdbiter->current);
result = dns_qpiter_prev(qpdbiter->current, qpdbiter->name,
(void **)&qpdbiter->node, NULL);
- if ((result == ISC_R_SUCCESS || result == DNS_R_NEWORIGIN) &&
+ if (result == ISC_R_SUCCESS &&
QPDBITER_NSEC3_ORIGIN_NODE(qpdb, qpdbiter))
{
/*
dns_qpiter_init(qpdb->nsec3, qpdbiter->current);
result = dns_qpiter_prev(qpdbiter->current, qpdbiter->name,
(void **)&qpdbiter->node, NULL);
- if ((result == ISC_R_SUCCESS || result == DNS_R_NEWORIGIN) &&
+ if (result == ISC_R_SUCCESS &&
QPDBITER_NSEC3_ORIGIN_NODE(qpdb, qpdbiter))
{
/*
UNREACHABLE();
}
- if (result == ISC_R_SUCCESS || result == DNS_R_NEWORIGIN) {
- qpdbiter->new_origin = true;
+ if (result == ISC_R_SUCCESS) {
reference_iter_node(qpdbiter DNS__DB_FLARG_PASS);
} else {
INSIST(result == ISC_R_NOMORE); /* The tree is empty. */
}
if (result == ISC_R_SUCCESS || result == DNS_R_PARTIALMATCH) {
- qpdbiter->new_origin = true;
dns_name_copy(&qpdbiter->node->name, qpdbiter->name);
reference_iter_node(qpdbiter DNS__DB_FLARG_PASS);
} else {
(void **)&qpdbiter->node, NULL);
if (qpdbiter->current == &qpdbiter->nsec3iter) {
- if (result == ISC_R_SUCCESS || result == DNS_R_NEWORIGIN) {
+ if (result == ISC_R_SUCCESS) {
/*
* If we're in the NSEC3 tree, it's empty or
* we've reached the origin, then we're done
}
}
- qpdbiter->new_origin = (result == DNS_R_NEWORIGIN);
-
if (result == ISC_R_SUCCESS) {
reference_iter_node(qpdbiter DNS__DB_FLARG_PASS);
} else {
(void **)&qpdbiter->node, NULL);
}
- if (result == DNS_R_NEWORIGIN || result == ISC_R_SUCCESS) {
+ if (result == ISC_R_SUCCESS) {
/*
* If we've just started the NSEC3 tree,
* skip over the origin.
}
}
- qpdbiter->new_origin = (result == DNS_R_NEWORIGIN);
-
if (result == ISC_R_SUCCESS) {
reference_iter_node(qpdbiter DNS__DB_FLARG_PASS);
} else {
qpcache_t *qpdb = (qpcache_t *)iterator->db;
qpdb_dbiterator_t *qpdbiter = (qpdb_dbiterator_t *)iterator;
qpcnode_t *node = qpdbiter->node;
- isc_result_t result = ISC_R_SUCCESS;
REQUIRE(qpdbiter->result == ISC_R_SUCCESS);
REQUIRE(qpdbiter->node != NULL);
if (name != NULL) {
dns_name_copy(&qpdbiter->node->name, name);
-
- if (qpdbiter->common.relative_names && qpdbiter->new_origin) {
- result = DNS_R_NEWORIGIN;
- }
- } else {
- result = ISC_R_SUCCESS;
}
newref(qpdb, node, isc_rwlocktype_none,
*nodep = qpdbiter->node;
- return (result);
+ return (ISC_R_SUCCESS);
}
static isc_result_t
static isc_result_t
dbiterator_origin(dns_dbiterator_t *iterator, dns_name_t *name) {
qpdb_dbiterator_t *qpdbiter = (qpdb_dbiterator_t *)iterator;
- dns_name_t *origin = dns_fixedname_name(&qpdbiter->origin);
if (qpdbiter->result != ISC_R_SUCCESS) {
return (qpdbiter->result);
}
- dns_name_copy(origin, name);
+ dns_name_copy(dns_rootname, name);
return (ISC_R_SUCCESS);
}