]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Small optimization in query_usestale
authorDiego Fronza <diego@isc.org>
Tue, 12 Jan 2021 15:59:21 +0000 (12:59 -0300)
committerDiego Fronza <diego@isc.org>
Mon, 25 Jan 2021 13:48:16 +0000 (10:48 -0300)
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

index c3a8174ab4caec081360f15de8079c31478c3f24..b452068f1a9e9413ebe7834f8d4342c11b5fec70 100644 (file)
@@ -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);
 }
 
 /*%