summaryrefslogtreecommitdiffstats
path: root/debian/patches/100-ixfr-Fix-fallback-to-axfr-in-XFR_TYPE_ERROR-case.patch
blob: af879992dedee25c58cfa187c78fcecee72b32e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
From c2f4982b39bb268255ae9a686933e383770f5e8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Gr=C3=B6ber?= <dxld@darkboxed.org>
Date: Sat, 25 Sep 2021 12:40:04 +0200
Subject: [PATCH 1/2] ixfr: Fix fallback to axfr in XFR_TYPE_ERROR case

---
 src/knot/events/handlers/refresh.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/knot/events/handlers/refresh.c b/src/knot/events/handlers/refresh.c
index 88c8daf27..865ef6deb 100644
--- a/src/knot/events/handlers/refresh.c
+++ b/src/knot/events/handlers/refresh.c
@@ -1196,12 +1196,12 @@ static int try_refresh(conf_t *conf, zone_t *zone, const conf_remote_t *master,
 
 	int timeout = conf->cache.srv_tcp_remote_io_timeout;
 
-	int ret;
+	int ret, i=0;
 
 	// while loop runs 0x or 1x; IXFR to AXFR failover
 	while (ret = knot_requestor_exec(&requestor, req, timeout),
 	       ret = (data.ret == KNOT_EOK ? ret : data.ret),
-	       ixfr_error_failover(ret) && data.xfr_type == XFR_TYPE_IXFR &&
+	       ixfr_error_failover(ret) && i++ <= 1 &&
 	       data.state != STATE_SOA_QUERY) {
 		REFRESH_LOG(LOG_WARNING, data.zone->name, data.remote,
 		            "fallback to AXFR (%s)", knot_strerror(ret));
-- 
2.30.2