2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00

SERVFAIL if a prior qmin fetch has not been canceled when a new one starts

This commit is contained in:
Evan Hunt
2019-09-27 13:28:09 -07:00
parent 879c0f4cf6
commit 488cb4da10

View File

@@ -4028,6 +4028,35 @@ fctx_try(fetchctx_t *fctx, bool retrying, bool badcache) {
if (fctx->minimized && !fctx->forwarding) { if (fctx->minimized && !fctx->forwarding) {
unsigned int options = fctx->options; unsigned int options = fctx->options;
options &= ~DNS_FETCHOPT_QMINIMIZE; options &= ~DNS_FETCHOPT_QMINIMIZE;
/*
* Is another QNAME minimization fetch still running?
*/
if (fctx->qminfetch != NULL) {
bool validfctx = (DNS_FETCH_VALID(fctx->qminfetch) &&
VALID_FCTX(fctx->qminfetch->private));
char namebuf[DNS_NAME_FORMATSIZE];
char typebuf[DNS_RDATATYPE_FORMATSIZE];
dns_name_format(&fctx->qminname, namebuf,
sizeof(namebuf));
dns_rdatatype_format(fctx->qmintype, typebuf,
sizeof(typebuf));
isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER,
DNS_LOGMODULE_RESOLVER, ISC_LOG_ERROR,
"fctx %p(%s): attempting QNAME "
"minimization fetch for %s/%s but "
"fetch %p(%s) still running",
fctx, fctx->info, namebuf, typebuf,
fctx->qminfetch,
validfctx
? fctx->qminfetch->private->info
: "<invalid>");
fctx_done(fctx, DNS_R_SERVFAIL, __LINE__);
return;
}
/* /*
* In "_ A" mode we're asking for _.domain - * In "_ A" mode we're asking for _.domain -
* resolver by default will follow delegations * resolver by default will follow delegations