diff options
Diffstat (limited to 'contrib/try-all-ns/dnsmasq-2.78xx-try-all-ns.patch')
-rw-r--r-- | contrib/try-all-ns/dnsmasq-2.78xx-try-all-ns.patch | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/contrib/try-all-ns/dnsmasq-2.78xx-try-all-ns.patch b/contrib/try-all-ns/dnsmasq-2.78xx-try-all-ns.patch new file mode 100644 index 0000000..700439e --- /dev/null +++ b/contrib/try-all-ns/dnsmasq-2.78xx-try-all-ns.patch @@ -0,0 +1,20 @@ +diff --git a/src/forward.c b/src/forward.c +index e3fa94b..ecf3b98 100644 +--- a/src/forward.c ++++ b/src/forward.c +@@ -789,9 +789,12 @@ void reply_query(int fd, int family, time_t now) + + /* Note: if we send extra options in the EDNS0 header, we can't recreate + the query from the reply. */ +- if (RCODE(header) == REFUSED && +- forward->forwardall == 0 && +- !(forward->flags & FREC_HAS_EXTRADATA)) ++ if ((RCODE(header) == REFUSED && ++ forward->forwardall == 0 && ++ !(forward->flags & FREC_HAS_EXTRADATA)) || ++ /* If strict-order is set, try next server on NXDOMAIN reply */ ++ (RCODE(header) == NXDOMAIN && option_bool(OPT_ORDER) && ++ server->next != NULL)) + /* for broken servers, attempt to send to another one. */ + { + unsigned char *pheader; |