REQUIRE(QPMULTI_VALID(multi));
REQUIRE(qp != NULL);
- dns_qpmulti_t *whence = reader_open(multi, qp);
- INSIST(whence == multi);
-
qp->tid = isc_tid();
rcu_read_lock();
+
+ dns_qpmulti_t *whence = reader_open(multi, qp);
+ INSIST(whence == multi);
}
void
REQUIRE(QPMULTI_VALID(multi));
REQUIRE(qpsp != NULL && *qpsp == NULL);
+ rcu_read_lock();
+
LOCK(&multi->mutex);
dns_qp_t *qpw = &multi->writer;
size_t bytes = sizeof(dns_qpsnap_t) + sizeof(dns_qpbase_t) +
sizeof(qpw->base->ptr[0]) * qpw->chunk_max;
dns_qpsnap_t *qps = isc_mem_allocate(qpw->mctx, bytes);
+
qps->whence = reader_open(multi, qps);
INSIST(qps->whence == multi);
*qpsp = NULL;
UNLOCK(&multi->mutex);
+
+ rcu_read_unlock();
}
/***********************************************************************