From: Diego Fronza Date: Tue, 12 Jan 2021 15:59:21 +0000 (-0300) Subject: Small optimization in query_usestale X-Git-Tag: v9.17.10~24^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f89ac07b28847d65a2b81b5474504b4634aeaf35;p=thirdparty%2Fbind9.git 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. --- diff --git a/lib/ns/query.c b/lib/ns/query.c index c3a8174ab4c..b452068f1a9 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); } /*%