]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Restore dns64 state during serve-stale processing
authorMark Andrews <marka@isc.org>
Thu, 12 Oct 2023 01:01:46 +0000 (12:01 +1100)
committerMichał Kępień <michal@isc.org>
Fri, 5 Jan 2024 11:20:25 +0000 (12:20 +0100)
If we are in the process of looking for the A records as part of
dns64 processing and the server-stale timeout triggers, redo the
dns64 changes that had been made to the orignal qctx.

(cherry picked from commit 1fcc483df13e049b96f620e515f0d4d45f3680b7)

lib/ns/query.c

index 61749c873b2952db59268caefbe0fcb31cbabdd7..40e12323910b1ccdf5a9ce1f5e8adfcd82c0d319 100644 (file)
@@ -6228,6 +6228,13 @@ query_lookup_stale(ns_client_t *client) {
        query_ctx_t qctx;
 
        qctx_init(client, NULL, client->query.qtype, &qctx);
+       if (DNS64(client)) {
+               qctx.qtype = qctx.type = dns_rdatatype_a;
+               qctx.dns64 = true;
+       }
+       if (DNS64EXCLUDE(client)) {
+               qctx.dns64_exclude = true;
+       }
        dns_db_attach(client->view->cachedb, &qctx.db);
        client->query.attributes &= ~NS_QUERYATTR_RECURSIONOK;
        client->query.dboptions |= DNS_DBFIND_STALETIMEOUT;