]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Test for #361 - forwarding breaks with qname minimization
authorWitold Kręcicki <wpk@isc.org>
Mon, 29 Oct 2018 12:39:33 +0000 (12:39 +0000)
committerWitold Kręcicki <wpk@isc.org>
Mon, 29 Oct 2018 19:22:10 +0000 (19:22 +0000)
bin/tests/system/qmin/ans2/ans.py
bin/tests/system/qmin/ns1/root.db
bin/tests/system/qmin/ns7/named.conf.in
bin/tests/system/qmin/tests.sh

index 17a2ba4874e169b035855f917814e4877281e2a2..e0d56af72a0f1d533169295d04af42159651e11f 100755 (executable)
@@ -120,6 +120,9 @@ def create_response(msg):
         slow = True
         suffix = "slow."
         lqname = lqname[:-5]
+    elif lqname.endswith("fwd."):
+        suffix = "fwd."
+        lqname = lqname[:-4]
     else:
         r.set_rcode(REFUSED)
         return r
index 294111df4dfdcbc1628343b5f3aa1f8bd3a3f70b..3b38a33bbdcdb62aaae4140eb559ac4cef0480e5 100644 (file)
@@ -30,3 +30,6 @@ ns2.slow.             A       10.53.0.2
 
 ugly.                  NS      ns2.ugly.
 ns2.ugly.              A       10.53.0.2
+
+fwd.                   NS      ns2.fwd.
+ns2.fwd.               A       10.53.0.2
index 84472ca92af900923d84202bb01f7d02d7ceddb7..0f69d2d26ba9dfd6049ee665001ff6cf56122b51 100644 (file)
@@ -39,3 +39,11 @@ zone "." {
        type hint;
        file "../../common/root.hint";
 };
+
+zone "fwd." IN {
+       type forward;
+       forwarders {
+               10.53.0.2;
+       };
+       forward only;
+};
index b88df3dd046c1a6b298f80eaba6690285ed382cd..ee2e25319539074cee434b8453ee5d0d094e092d 100755 (executable)
@@ -310,5 +310,22 @@ for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=`expr $status + $ret`
 
+n=`expr $n + 1`
+echo_i "qname minimization is disabled when forwarding ($n)"
+ret=0
+$CLEANQL
+$RNDCCMD 10.53.0.7 flush
+$DIG $DIGOPTS a.bit.longer.ns.name.fwd. @10.53.0.7 > dig.out.test$n
+grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
+grep "a.bit.longer.ns.name.fwd. 1      IN      A       10.53.0.4" dig.out.test$n >/dev/null || ret=1
+sleep 1
+cat << __EOF | diff ans2/query.log - > /dev/null || ret=1
+NS fwd.
+ADDR a.bit.longer.ns.name.good.
+__EOF
+for ans in ans2; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=`expr $status + $ret`
+
 echo_i "exit status: $status"
 [ $status -eq 0 ] || exit 1