diff options
Diffstat (limited to '')
-rw-r--r-- | debian/patches/0034-Enable-lame-response-detection-even-with-disabled-la.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/debian/patches/0034-Enable-lame-response-detection-even-with-disabled-la.patch b/debian/patches/0034-Enable-lame-response-detection-even-with-disabled-la.patch new file mode 100644 index 0000000..790b7c1 --- /dev/null +++ b/debian/patches/0034-Enable-lame-response-detection-even-with-disabled-la.patch @@ -0,0 +1,48 @@ +From: =?utf-8?b?T25kxZllaiBTdXLDvQ==?= <ondrej@sury.org> +Date: Fri, 24 Sep 2021 09:48:50 +0200 +Subject: Enable lame response detection even with disabled lame cache + +Previously, when lame cache would be disabled by setting lame-ttl to 0, +it would also disable lame answer detection. In this commit, we enable +the lame response detection even when the lame cache is disabled. This +enables stopping answer processing early rather than going through the +whole answer processing flow. +--- + lib/dns/resolver.c | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c +index 1e4fcab..bfc1ae2 100644 +--- a/lib/dns/resolver.c ++++ b/lib/dns/resolver.c +@@ -8323,18 +8323,20 @@ resquery_response(isc_task_t *task, isc_event_t *event) { + /* + * Is the server lame? + */ +- if (res->lame_ttl != 0 && !ISFORWARDER(query->addrinfo) && +- is_lame(fctx)) { ++ if (!ISFORWARDER(query->addrinfo) && is_lame(fctx)) { + inc_stats(res, dns_resstatscounter_lame); + log_lame(fctx, query->addrinfo); +- result = dns_adb_marklame(fctx->adb, query->addrinfo, +- &fctx->name, fctx->type, +- now + res->lame_ttl); +- if (result != ISC_R_SUCCESS) +- isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER, +- DNS_LOGMODULE_RESOLVER, ISC_LOG_ERROR, +- "could not mark server as lame: %s", +- isc_result_totext(result)); ++ if (res->lame_ttl != 0) { ++ result = dns_adb_marklame(fctx->adb, query->addrinfo, ++ &fctx->name, fctx->type, ++ now + res->lame_ttl); ++ if (result != ISC_R_SUCCESS) { ++ isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER, ++ DNS_LOGMODULE_RESOLVER, ISC_LOG_ERROR, ++ "could not mark server as lame: %s", ++ isc_result_totext(result)); ++ } ++ } + broken_server = DNS_R_LAME; + keep_trying = true; + FCTXTRACE("lame server"); |