From: Mark Andrews Date: Thu, 12 Sep 2019 06:03:41 +0000 (+1000) Subject: reset fctx->qmindcname and fctx->qminname after processing a delegation X-Git-Tag: v9.14.7~2^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8766962f2248a2b5c6504331faeaeaa715acf105;p=thirdparty%2Fbind9.git reset fctx->qmindcname and fctx->qminname after processing a delegation (cherry picked from commit 622bef6aeca9b31d341483bbba812af378515c6e) --- diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 37e1e3e5d3e..52ac674ec28 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -9240,6 +9240,23 @@ rctx_referral(respctx_t *rctx) { return (ISC_R_COMPLETE); } + if ((fctx->options & DNS_FETCHOPT_QMINIMIZE) != 0) { + dns_name_free(&fctx->qmindcname, fctx->mctx); + dns_name_init(&fctx->qmindcname, NULL); + result = dns_name_dup(rctx->ns_name, fctx->mctx, + &fctx->qmindcname); + if (result != ISC_R_SUCCESS) { + rctx->result = result; + return (ISC_R_COMPLETE); + } + + result= fctx_minimize_qname(fctx); + if (result != ISC_R_SUCCESS) { + rctx->result = result; + return (ISC_R_COMPLETE); + } + } + result = fcount_incr(fctx, true); if (result != ISC_R_SUCCESS) { rctx->result = result;