From 3f81d79ffbfc3eb5bd6bf7d8663af5ab705db53b 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. --- lib/ns/query.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/ns/query.c b/lib/ns/query.c index dbdb355f74..04bdd67809 100644 --- a/lib/ns/query.c +++ b/lib/ns/query.c @@ -6103,6 +6103,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;