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:
@@ -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
|
||||||
|
Reference in New Issue
Block a user