static void
validated(void *arg);
static void
-maybe_cancel_validators(fetchctx_t *fctx);
-static void
add_bad(fetchctx_t *fctx, dns_message_t *rmessage, dns_adbaddrinfo_t *addrinfo,
isc_result_t reason, badnstype_t badtype);
static void
fctx_stoptimer(fctx);
/*
- * Cancel all pending validators. Note that this must be done
- * without the fctx lock held, since that could cause
- * deadlock.
+ * Cancel all pending validators.
*/
- maybe_cancel_validators(fctx);
+ ISC_LIST_FOREACH(fctx->validators, validator, link) {
+ dns_validator_cancel(validator);
+ }
if (fctx->nsfetch != NULL) {
dns_resolver_cancelfetch(fctx->nsfetch);
#define CHASE(r) (((r)->attributes.chase))
#define CHECKNAMES(r) (((r)->attributes.checknames))
-/*
- * Cancel validators associated with '*fctx' if it is ready to be
- * destroyed (i.e., no queries waiting for it and no pending ADB finds).
- * Caller must hold fctx bucket lock.
- *
- * Requires:
- * '*fctx' is shutting down.
- */
-static void
-maybe_cancel_validators(fetchctx_t *fctx) {
- if (atomic_load_acquire(&fctx->pending) != 0 ||
- atomic_load_acquire(&fctx->nqueries) != 0)
- {
- return;
- }
-
- REQUIRE(SHUTTINGDOWN(fctx));
- ISC_LIST_FOREACH(fctx->validators, validator, link) {
- dns_validator_cancel(validator);
- }
-}
-
/*
* typemap with just RRSIG(46) and NSEC(47) bits set.
*