From f89ac07b28847d65a2b81b5474504b4634aeaf35 Mon Sep 17 00:00:00 2001 From: Diego Fronza Date: Tue, 12 Jan 2021 12:59:21 -0300 Subject: [PATCH] Small optimization in query_usestale This commit makes the code in query_usestale easier to follow, it also doesn't attach/detach to the database if stale answers are not enabled. --- lib/ns/query.c | 35 +++++------------------------------ 1 file changed, 5 insertions(+), 30 deletions(-) diff --git a/lib/ns/query.c b/lib/ns/query.c index c3a8174ab4..b452068f1a 100644 --- a/lib/ns/query.c +++ b/lib/ns/query.c @@ -7368,45 +7368,20 @@ root_key_sentinel_return_servfail(query_ctx_t *qctx, isc_result_t result) { */ static bool query_usestale(query_ctx_t *qctx) { - bool staleanswersok = false; - dns_ttl_t stale_ttl = 0; - isc_result_t result; - qctx_clean(qctx); qctx_freedata(qctx); - /* - * Stale answers only make sense if stale_ttl > 0 but we want rndc to - * be able to control returning stale answers if they are configured. - */ - dns_db_attach(qctx->client->view->cachedb, &qctx->db); - result = dns_db_getservestalettl(qctx->db, &stale_ttl); - if (result == ISC_R_SUCCESS && stale_ttl > 0) { - switch (qctx->client->view->staleanswersok) { - case dns_stale_answer_yes: - staleanswersok = true; - break; - case dns_stale_answer_conf: - staleanswersok = qctx->client->view->staleanswersenable; - break; - case dns_stale_answer_no: - staleanswersok = false; - break; - } - } else { - staleanswersok = false; - } - - if (staleanswersok) { + if (dns_view_staleanswerenabled(qctx->client->view)) { + dns_db_attach(qctx->client->view->cachedb, &qctx->db); qctx->client->query.dboptions |= DNS_DBFIND_STALEOK; if (qctx->client->query.fetch != NULL) { dns_resolver_destroyfetch(&qctx->client->query.fetch); } - } else { - dns_db_detach(&qctx->db); + + return (true); } - return (staleanswersok); + return (false); } /*%