From: Pieter Lexis Date: Thu, 19 Apr 2018 08:27:00 +0000 (+0200) Subject: EDNS: Ensure not query processing happens on EDNS error X-Git-Tag: dnsdist-1.3.1~50^2~3 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6cf962272601ceae1a99a9d4842ecb264a79d9c5;p=pdns EDNS: Ensure not query processing happens on EDNS error --- diff --git a/pdns/pdns_recursor.cc b/pdns/pdns_recursor.cc index 8bdc0c139..c8c93c7d0 100644 --- a/pdns/pdns_recursor.cc +++ b/pdns/pdns_recursor.cc @@ -990,6 +990,10 @@ static void startDoResolve(void *p) dq.deviceId = dc->d_deviceId; #endif + if(ednsExtRCode != 0) { + goto sendit; + } + if(dc->d_mdp.d_qtype==QType::ANY && !dc->d_tcp && g_anyToTcp) { pw.getHeader()->tc = 1; res = 0; diff --git a/regression-tests.recursor-dnssec/test_EDNS.py b/regression-tests.recursor-dnssec/test_EDNS.py index eebbc2f2c..b81849f4e 100644 --- a/regression-tests.recursor-dnssec/test_EDNS.py +++ b/regression-tests.recursor-dnssec/test_EDNS.py @@ -33,9 +33,11 @@ class EDNSTest(RecursorTest): def testEDNSBadVers(self): """ - Ensure the rcode is BADVERS when we send an unsupported EDNS version + Ensure the rcode is BADVERS when we send an unsupported EDNS version and + the query is not processed any further. """ query = dns.message.make_query('version.bind.', 'TXT', 'CH', use_edns=5, payload=4096) response = self.sendUDPQuery(query) self.assertRcodeEqual(response, dns.rcode.BADVERS) + self.assertEqual(response.answer, [])