commit abed1d9117d1c9944a1df03f9308c59b2dc64fc3
Author: Chris Novakovic <chris@chrisn.me.uk>
Date: Mon Jan 25 21:54:35 2016 +0000
Treat REFUSED (not SERVFAIL) as an unsuccessful upstream response
Commit 51967f9807665dae403f1497b827165c5fa1084b began treating SERVFAIL
as a successful response from an upstream server (thus ignoring future
responses to the query from other upstream servers), but a typo in that
commit means that REFUSED responses are accidentally being treated as
successful instead of SERVFAIL responses.
This commit corrects this typo and provides the behaviour intended by
commit 51967f9: SERVFAIL responses are considered successful (and will
be sent back to the requester), while REFUSED responses are considered
unsuccessful (and dnsmasq will wait for responses from other upstream
servers that haven't responded yet).
diff --git a/src/forward.c b/src/forward.c
index 2731b90..7ea7f61 100644
--- a/src/forward.c
+++ b/src/forward.c
@@ -810,7 +810,7 @@ void reply_query(int fd, int family, time_t now)
we get a good reply from another server. Kill it when we've
had replies from all to avoid filling the forwarding table when
everything is broken */
- if (forward->forwardall == 0 || --forward->forwardall == 1 || RCODE(header) != SERVFAIL)
+ if (forward->forwardall == 0 || --forward->forwardall == 1 || RCODE(header) != REFUSED)
{
int check_rebind = 0, no_cache_dnssec = 0, cache_secure = 0, bogusanswer = 0;