}
}
+static void
+bindrdatasets(qpcache_t *qpdb, qpcnode_t *qpnode, dns_slabheader_t *found,
+ dns_slabheader_t *foundsig, isc_stdtime_t now,
+ isc_rwlocktype_t nlocktype, isc_rwlocktype_t tlocktype,
+ dns_rdataset_t *rdataset,
+ dns_rdataset_t *sigrdataset DNS__DB_FLARG) {
+ bindrdataset(qpdb, qpnode, found, now, nlocktype, tlocktype,
+ rdataset DNS__DB_FLARG_PASS);
+ if (!NEGATIVE(found) && foundsig != NULL) {
+ bindrdataset(qpdb, qpnode, foundsig, now, nlocktype, tlocktype,
+ sigrdataset DNS__DB_FLARG_PASS);
+ }
+}
+
static isc_result_t
setup_delegation(qpc_search_t *search, dns_dbnode_t **nodep,
dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset,
isc_rwlock_t *nlock =
&search->qpdb->buckets[node->locknum].lock;
NODE_RDLOCK(nlock, &nlocktype);
- bindrdataset(search->qpdb, node, search->zonecut_header,
- search->now, nlocktype, tlocktype,
- rdataset DNS__DB_FLARG_PASS);
- if (sigrdataset != NULL && search->zonecut_sigheader != NULL) {
- bindrdataset(search->qpdb, node,
- search->zonecut_sigheader, search->now,
- nlocktype, tlocktype,
- sigrdataset DNS__DB_FLARG_PASS);
- }
+ bindrdatasets(search->qpdb, node, search->zonecut_header,
+ search->zonecut_sigheader, search->now, nlocktype,
+ tlocktype, rdataset,
+ sigrdataset DNS__DB_FLARG_PASS);
NODE_UNLOCK(nlock, &nlocktype);
}
isc_rwlocktype_none DNS__DB_FLARG_PASS);
*nodep = (dns_dbnode_t *)node;
}
- bindrdataset(search->qpdb, node, found, search->now,
- nlocktype, isc_rwlocktype_none,
- rdataset DNS__DB_FLARG_PASS);
- if (foundsig != NULL) {
- bindrdataset(search->qpdb, node, foundsig,
- search->now, nlocktype,
- isc_rwlocktype_none,
- sigrdataset DNS__DB_FLARG_PASS);
- }
+ bindrdatasets(search->qpdb, node, found, foundsig,
+ search->now, nlocktype,
+ isc_rwlocktype_none, rdataset,
+ sigrdataset DNS__DB_FLARG_PASS);
if (need_headerupdate(found, search->now) ||
(foundsig != NULL &&
need_headerupdate(foundsig, search->now)))
}
}
if (found != NULL) {
- bindrdataset(search->qpdb, node, found, search->now, nlocktype,
- isc_rwlocktype_none, rdataset DNS__DB_FLARG_PASS);
- if (foundsig != NULL) {
- bindrdataset(search->qpdb, node, foundsig, search->now,
- nlocktype, isc_rwlocktype_none,
- sigrdataset DNS__DB_FLARG_PASS);
- }
+ bindrdatasets(search->qpdb, node, found, foundsig, search->now,
+ nlocktype, isc_rwlocktype_none, rdataset,
+ sigrdataset DNS__DB_FLARG_PASS);
qpcnode_acquire(search->qpdb, node, nlocktype,
isc_rwlocktype_none DNS__DB_FLARG_PASS);
tlocktype DNS__DB_FLARG_PASS);
*nodep = (dns_dbnode_t *)node;
}
- bindrdataset(search.qpdb, node, nsecheader, search.now,
- nlocktype, tlocktype,
- rdataset DNS__DB_FLARG_PASS);
+ bindrdatasets(search.qpdb, node, nsecheader, nsecsig,
+ search.now, nlocktype, tlocktype,
+ rdataset, sigrdataset DNS__DB_FLARG_PASS);
if (need_headerupdate(nsecheader, search.now)) {
update = nsecheader;
}
- if (nsecsig != NULL) {
- bindrdataset(search.qpdb, node, nsecsig,
- search.now, nlocktype, tlocktype,
- sigrdataset DNS__DB_FLARG_PASS);
- if (need_headerupdate(nsecsig, search.now)) {
- updatesig = nsecsig;
- }
+ if (nsecsig != NULL &&
+ need_headerupdate(nsecsig, search.now))
+ {
+ updatesig = nsecsig;
}
result = DNS_R_COVERINGNSEC;
goto node_exit;
tlocktype DNS__DB_FLARG_PASS);
*nodep = (dns_dbnode_t *)node;
}
- bindrdataset(search.qpdb, node, nsheader, search.now,
- nlocktype, tlocktype,
- rdataset DNS__DB_FLARG_PASS);
+ bindrdatasets(search.qpdb, node, nsheader, nssig,
+ search.now, nlocktype, tlocktype,
+ rdataset, sigrdataset DNS__DB_FLARG_PASS);
if (need_headerupdate(nsheader, search.now)) {
update = nsheader;
}
- if (nssig != NULL) {
- bindrdataset(search.qpdb, node, nssig,
- search.now, nlocktype, tlocktype,
- sigrdataset DNS__DB_FLARG_PASS);
- if (need_headerupdate(nssig, search.now)) {
- updatesig = nssig;
- }
+ if (nssig != NULL &&
+ need_headerupdate(nssig, search.now))
+ {
+ updatesig = nssig;
}
result = DNS_R_DELEGATION;
goto node_exit;
if (type != dns_rdatatype_any || result == DNS_R_NCACHENXDOMAIN ||
result == DNS_R_NCACHENXRRSET)
{
- bindrdataset(search.qpdb, node, found, search.now, nlocktype,
- tlocktype, rdataset DNS__DB_FLARG_PASS);
+ bindrdatasets(search.qpdb, node, found, foundsig, search.now,
+ nlocktype, tlocktype, rdataset,
+ sigrdataset DNS__DB_FLARG_PASS);
if (need_headerupdate(found, search.now)) {
update = found;
}
- if (!NEGATIVE(found) && foundsig != NULL) {
- bindrdataset(search.qpdb, node, foundsig, search.now,
- nlocktype, tlocktype,
- sigrdataset DNS__DB_FLARG_PASS);
- if (need_headerupdate(foundsig, search.now)) {
- updatesig = foundsig;
- }
+ if (foundsig != NULL && need_headerupdate(foundsig, search.now))
+ {
+ updatesig = foundsig;
}
}
*nodep = (dns_dbnode_t *)node;
}
- bindrdataset(search.qpdb, node, found, search.now, nlocktype, tlocktype,
- rdataset DNS__DB_FLARG_PASS);
- if (foundsig != NULL) {
- bindrdataset(search.qpdb, node, foundsig, search.now, nlocktype,
- tlocktype, sigrdataset DNS__DB_FLARG_PASS);
- }
+ bindrdatasets(search.qpdb, node, found, foundsig, search.now, nlocktype,
+ tlocktype, rdataset, sigrdataset DNS__DB_FLARG_PASS);
if (need_headerupdate(found, search.now) ||
(foundsig != NULL && need_headerupdate(foundsig, search.now)))
}
}
if (found != NULL) {
- bindrdataset(qpdb, qpnode, found, now, nlocktype,
- isc_rwlocktype_none, rdataset DNS__DB_FLARG_PASS);
- if (!NEGATIVE(found) && foundsig != NULL) {
- bindrdataset(qpdb, qpnode, foundsig, now, nlocktype,
- isc_rwlocktype_none,
- sigrdataset DNS__DB_FLARG_PASS);
- }
+ bindrdatasets(qpdb, qpnode, found, foundsig, now, nlocktype,
+ isc_rwlocktype_none, rdataset,
+ sigrdataset DNS__DB_FLARG_PASS);
}
NODE_UNLOCK(nlock, &nlocktype);