mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
In rctx_answer return DNS_R_DELEGATION on NOFOLLOW
When DNS_FETCHOPT_NOFOLLOW is set DNS_R_DELEGATION needs to be
returned to restart the resolution process rather than converting
it to ISC_R_SUCCESS.
(cherry picked from commit ea11650376)
This commit is contained in:
parent
7f2eeb60ee
commit
5739b4817a
1 changed files with 11 additions and 2 deletions
|
|
@ -8005,7 +8005,8 @@ resquery_response(isc_result_t eresult, isc_region_t *region, void *arg) {
|
|||
break;
|
||||
case DNS_R_DELEGATION:
|
||||
/*
|
||||
* With NOFOLLOW we want to pass the result code.
|
||||
* With NOFOLLOW we want to pass return
|
||||
* DNS_R_DELEGATION to resume_qmin.
|
||||
*/
|
||||
if ((fctx->options & DNS_FETCHOPT_NOFOLLOW) == 0) {
|
||||
result = ISC_R_SUCCESS;
|
||||
|
|
@ -8549,6 +8550,14 @@ rctx_answer(respctx_t *rctx) {
|
|||
}
|
||||
|
||||
if (result == DNS_R_DELEGATION) {
|
||||
/*
|
||||
* With NOFOLLOW we want to return DNS_R_DELEGATION to
|
||||
* resume_qmin.
|
||||
*/
|
||||
if ((rctx->fctx->options & DNS_FETCHOPT_NOFOLLOW) != 0)
|
||||
{
|
||||
return (result);
|
||||
}
|
||||
result = ISC_R_SUCCESS;
|
||||
} else {
|
||||
/*
|
||||
|
|
@ -8590,7 +8599,7 @@ rctx_answer_positive(respctx_t *rctx) {
|
|||
isc_result_t result;
|
||||
fetchctx_t *fctx = rctx->fctx;
|
||||
|
||||
FCTXTRACE("rctx_answer");
|
||||
FCTXTRACE("rctx_answer_positive");
|
||||
|
||||
rctx_answer_init(rctx);
|
||||
rctx_answer_scan(rctx);
|
||||
|
|
|
|||
Loading…
Reference in a new issue