From 5130c21fbb806a28ab4e535b700df872a80798d8 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 10 Mar 2021 20:31:40 +0100 Subject: [PATCH] BUG/MINOR: resolvers: Reset server address on DNS error only on status change When a DNS resolution error is detected, in snr_resolution_error_cb(), the server address must be reset only if the server status has changed. It this case, it means the server is set to RMAINT. Thus the server address may by reset. This patch fixes a bug introduced by commit d127ffa9f ("BUG/MEDIUM: resolvers: Reset address for unresolved servers"). It must be backported as far as 2.0. --- src/server.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server.c b/src/server.c index 18996a0..c577dc8 100644 --- a/src/server.c +++ b/src/server.c @@ -3293,8 +3293,8 @@ int snr_resolution_error_cb(struct resolv_requester *requester, int error_code) if (!s) return 1; HA_SPIN_LOCK(SERVER_LOCK, &s->lock); - snr_update_srv_status(s, 1); - memset(&s->addr, 0, sizeof(s->addr)); + if (!snr_update_srv_status(s, 1)) + memset(&s->addr, 0, sizeof(s->addr)); HA_SPIN_UNLOCK(SERVER_LOCK, &s->lock); return 1; } -- 1.7.10.4