]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
fixup! Detect resolution loops between fetches
authorOndřej Surý <ondrej@isc.org>
Wed, 22 Oct 2025 18:46:06 +0000 (20:46 +0200)
committerOndřej Surý <ondrej@isc.org>
Wed, 22 Oct 2025 18:46:06 +0000 (20:46 +0200)
lib/dns/resolver.c
lib/isc/include/isc/result.h
lib/isc/result.c

index 0c07eb983e522aa567e9f88ee130d1ec9addb74a..a7b05b2b04d2849b6873bb22aa6988dc2d422590 100644 (file)
@@ -10181,11 +10181,11 @@ dns_resolver_createfetch(dns_resolver_t *res, const dns_name_t *name,
                        dns_rdatatype_format(type, typebuf, sizeof(typebuf));
 
                        isc_log_write(DNS_LOGCATEGORY_RESOLVER,
-                                     DNS_LOGMODULE_RESOLVER, ISC_LOG_INFO,
+                                     DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(2),
                                      "fetch loop detected resolving '%s/%s'",
                                      namebuf, typebuf);
                }
-               return DNS_R_SERVFAIL;
+               return DNS_R_LOOPDETECTED;
        }
 
        fetch = isc_mem_get(mctx, sizeof(*fetch));
index 35959812de262b501382f58c2b1ec1c763d22382..34f08a7f7426c3f055a0481d8cb61766a2a5f099 100644 (file)
@@ -208,6 +208,7 @@ typedef enum isc_result {
        DNS_R_NODOHPATH,
        DNS_R_NOSKRFILE,
        DNS_R_NOSKRBUNDLE,
+       DNS_R_LOOPDETECTED,
 
        DST_R_UNSUPPORTEDALG,
        DST_R_CRYPTOFAILURE,
index a5f5de90628c3ae1cb960d99c3852af000e5ac56..a7c4dc913879ebf7b427c26fa3a12dc1bd36f846 100644 (file)
@@ -19,6 +19,8 @@
 #include <isc/once.h>
 #include <isc/util.h>
 
+#include "isc/result.h"
+
 static const char *description[ISC_R_NRESULTS] = {
        [ISC_R_SUCCESS] = "success",
        [ISC_R_NOMEMORY] = "out of memory",
@@ -210,6 +212,7 @@ static const char *description[ISC_R_NRESULTS] = {
        [DNS_R_NODOHPATH] = "no DOHPATH",
        [DNS_R_NOSKRFILE] = "no SKR file",
        [DNS_R_NOSKRBUNDLE] = "no available SKR bundle",
+       [DNS_R_LOOPDETECTED] = "fetch loop detected",
 
        [DST_R_UNSUPPORTEDALG] = "algorithm is unsupported",
        [DST_R_CRYPTOFAILURE] = "crypto failure",
@@ -442,6 +445,7 @@ static const char *identifier[ISC_R_NRESULTS] = {
        [DNS_R_NODOHPATH] = "DNS_R_NODOHPATH",
        [DNS_R_NOSKRFILE] = "DNS_R_NOSKRFILE",
        [DNS_R_NOSKRBUNDLE] = "DNS_R_NOSKRBUNDLE",
+       [DNS_R_LOOPDETECTED] = "DNS_R_LOOPDETECTED",
 
        [DST_R_UNSUPPORTEDALG] = "DST_R_UNSUPPORTEDALG",
        [DST_R_CRYPTOFAILURE] = "DST_R_CRYPTOFAILURE",