diff options
author | Hans Dedecker <dedeckeh@gmail.com> | 2017-06-28 10:15:38 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2017-07-12 22:06:48 +0200 |
commit | 699e3127c57ed037b63ad931da75905b010628b2 (patch) | |
tree | f206969a63e7957ecf173e67849c306a3b2bf3f2 /package | |
parent | d0ec502510c6f2618213fb9cab8e8046156ae72c (diff) | |
download | mtk-20170518-699e3127c57ed037b63ad931da75905b010628b2.zip mtk-20170518-699e3127c57ed037b63ad931da75905b010628b2.tar.gz mtk-20170518-699e3127c57ed037b63ad931da75905b010628b2.tar.bz2 |
dnsmasq: backport patch fixing DNS failover (FS#841)
Backport upstream dnsmasq patch fixing DNS failover when first servers
returns REFUSED in strict mode; fixes issue FS#841.
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Diffstat (limited to 'package')
-rw-r--r-- | package/network/services/dnsmasq/patches/020-Try-other-servers-if-first-returns-REFUSED-when-stri.patch | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/package/network/services/dnsmasq/patches/020-Try-other-servers-if-first-returns-REFUSED-when-stri.patch b/package/network/services/dnsmasq/patches/020-Try-other-servers-if-first-returns-REFUSED-when-stri.patch new file mode 100644 index 0000000..cdab607 --- /dev/null +++ b/package/network/services/dnsmasq/patches/020-Try-other-servers-if-first-returns-REFUSED-when-stri.patch @@ -0,0 +1,31 @@ +From 9396752c115b3ab733fa476b30da73237e12e7ba Mon Sep 17 00:00:00 2001 +From: Hans Dedecker <dedeckeh@gmail.com> +Date: Tue, 27 Jun 2017 22:08:47 +0100 +Subject: [PATCH] Try other servers if first returns REFUSED when + --strict-order active. + +If a DNS server replies REFUSED for a given DNS query in strict order mode +no failover to the next DNS server is triggered as the failover logic only +covers non strict mode. +As a result the client will be returned the REFUSED reply without first +falling back to the secondary DNS server(s). + +Make failover support work as well for strict mode config in case REFUSED is +replied by deleting the strict order check and rely only on forwardall being +equal to 0 which is the case in non strict mode when a single server has been +contacted or when strict order mode has been configured. +--- + CHANGELOG | 4 ++++ + src/forward.c | 1 - + 2 files changed, 4 insertions(+), 1 deletion(-) + +--- a/src/forward.c ++++ b/src/forward.c +@@ -790,7 +790,6 @@ void reply_query(int fd, int family, tim + /* Note: if we send extra options in the EDNS0 header, we can't recreate + the query from the reply. */ + if (RCODE(header) == REFUSED && +- !option_bool(OPT_ORDER) && + forward->forwardall == 0 && + !(forward->flags & FREC_HAS_EXTRADATA)) + /* for broken servers, attempt to send to another one. */ |