]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
don't accept empty NOERROR as authoritative NOERROR, includes test. Reported by Brend...
authorPeter van Dijk <peter.van.dijk@netherlabs.nl>
Fri, 5 Apr 2013 11:01:09 +0000 (11:01 +0000)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Fri, 5 Apr 2013 11:01:09 +0000 (11:01 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@3146 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/syncres.cc
regression-tests.recursor/config.sh
regression-tests.recursor/lame-noerror/command [new file with mode: 0755]
regression-tests.recursor/lame-noerror/description [new file with mode: 0644]
regression-tests.recursor/lame-noerror/expected_result [new file with mode: 0644]

index 3c677e750ac5cef0523767ad8cf2bac613622a8a..c66e384e5e53b827b32fed1a39c74cb6c9400334 100644 (file)
@@ -1125,8 +1125,8 @@ int SyncRes::doResolveAt(set<string, CIStringCompare> nameservers, string auth,
         LOG(prefix<<qname<<": status=NXDOMAIN, we are done "<<(negindic ? "(have negative SOA)" : "")<<endl);
         return RCode::NXDomain;
       }
-      if(nsset.empty() && !lwr.d_rcode) {
-        LOG(prefix<<qname<<": status=noerror, other types may exist, but we are done "<<(negindic ? "(have negative SOA)" : "")<<endl);
+      if(nsset.empty() && !lwr.d_rcode && negindic) {
+        LOG(prefix<<qname<<": status=noerror, other types may exist, but we are done (have negative SOA)")<<endl);
         return 0;
       }
       else if(realreferral) {
index ec7b85d37889f7f301fab4aafd185bc1dd2f9e34..bdfe3e0a1b92b973c967ee75a42d12a550041efd 100755 (executable)
@@ -74,6 +74,8 @@ trillian.example.net.    3600 IN NS  ns.trillian.example.net.
 ns.trillian.example.net. 3600 IN A   $PREFIX.16
 ghost.example.net.       3600 IN NS  ns.ghost.example.net.
 ns.ghost.example.net.    3600 IN A   $PREFIX.17
+ford.example.net.        3600 IN NS  ns.ford.example.net.
+ns.ford.example.net.     3600 IN A   $PREFIX.12
 EOF
 
 mkdir $PREFIX.11
diff --git a/regression-tests.recursor/lame-noerror/command b/regression-tests.recursor/lame-noerror/command
new file mode 100755 (executable)
index 0000000..04e25b1
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+cleandig www.ford.example.net A | sed 's/\(.*\tIN\t[A-Z0-9]\+\t\)\([0-9]\+\)/\13600/'
diff --git a/regression-tests.recursor/lame-noerror/description b/regression-tests.recursor/lame-noerror/description
new file mode 100644 (file)
index 0000000..51c0476
--- /dev/null
@@ -0,0 +1 @@
+Correctly recognise a non-aa non-SOA NOERROR as lame.
diff --git a/regression-tests.recursor/lame-noerror/expected_result b/regression-tests.recursor/lame-noerror/expected_result
new file mode 100644 (file)
index 0000000..c533c7f
--- /dev/null
@@ -0,0 +1,2 @@
+Rcode: 2, RD: 1, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='www.ford.example.net.', qtype=A