summaryrefslogtreecommitdiffstats
path: root/debian/patches/0034-Enable-lame-response-detection-even-with-disabled-la.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/0034-Enable-lame-response-detection-even-with-disabled-la.patch')
-rw-r--r--debian/patches/0034-Enable-lame-response-detection-even-with-disabled-la.patch48
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");