From 34dd6521b149ec641ffb216954dbaea19e9dcdc5 Mon Sep 17 00:00:00 2001 From: Matthijs Mekking Date: Fri, 26 Mar 2021 15:18:01 +0100 Subject: [PATCH] Restore the RECURSIONOK attribute after staleonly When doing a staleonly lookup we don't want to fallback to recursion. After all, there are obviously problems with recursion, otherwise we wouldn't do a staleonly lookup. When resuming from recursion however, we should restore the RECURSIONOK flag, allowing future required lookups for this client to recurse. (cherry picked from commit 3f81d79ffbfc3eb5bd6bf7d8663af5ab705db53b) --- lib/ns/query.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/ns/query.c b/lib/ns/query.c index fa6291ade2..5cd874ed7e 100644 --- a/lib/ns/query.c +++ b/lib/ns/query.c @@ -6038,6 +6038,13 @@ fetch_callback(isc_task_t *task, isc_event_t *event) { return; } + /* + * We are resuming from recursion. Reset any attributes, options + * that a stale-only lookup may have set. + */ + if (client->view->cachedb != NULL && client->view->recursion) { + client->query.attributes |= NS_QUERYATTR_RECURSIONOK; + } client->query.dboptions &= ~DNS_DBFIND_STALEONLY; client->nodetach = false;