attach query counter to NS fetches

there were cases in resolver.c when queries for NS records were
started without passing a pointer to the parent fetch's query counter;
as a result, the max-recursion-queries quota for those queries started
counting from zero, instead of sharing the limit for the parent fetch,
making the quota ineffective in some cases.

(cherry picked from commit d3b7e92783)
This commit is contained in:
Evan Hunt 2024-05-22 13:02:16 -07:00
parent 3de13146e8
commit 3fd795d84d

View file

@ -7128,7 +7128,7 @@ resume_dslookup(void *arg) {
fetchctx_ref(fctx);
result = dns_resolver_createfetch(
res, fctx->nsname, dns_rdatatype_ns, domain, nsrdataset,
NULL, NULL, 0, fctx->options, 0, NULL, loop,
NULL, NULL, 0, fctx->options, 0, fctx->qc, loop,
resume_dslookup, fctx, &fctx->nsrrset, NULL,
&fctx->nsfetch);
if (result != ISC_R_SUCCESS) {
@ -9556,8 +9556,8 @@ rctx_chaseds(respctx_t *rctx, dns_message_t *message,
fetchctx_ref(fctx);
result = dns_resolver_createfetch(
fctx->res, fctx->nsname, dns_rdatatype_ns, NULL, NULL, NULL,
NULL, 0, fctx->options, 0, NULL, fctx->loop, resume_dslookup,
fctx, &fctx->nsrrset, NULL, &fctx->nsfetch);
NULL, 0, fctx->options, 0, fctx->qc, fctx->loop,
resume_dslookup, fctx, &fctx->nsrrset, NULL, &fctx->nsfetch);
if (result != ISC_R_SUCCESS) {
if (result == DNS_R_DUPLICATE) {
result = DNS_R_SERVFAIL;