From: Witold Kręcicki Date: Mon, 29 Oct 2018 12:39:33 +0000 (+0000) Subject: Test for #361 - forwarding breaks with qname minimization X-Git-Tag: v9.13.4~75^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b4ca2825891ab9f3bfb321922ca1c7ba282ed936;p=thirdparty%2Fbind9.git Test for #361 - forwarding breaks with qname minimization --- diff --git a/bin/tests/system/qmin/ans2/ans.py b/bin/tests/system/qmin/ans2/ans.py index 17a2ba4874e..e0d56af72a0 100755 --- a/bin/tests/system/qmin/ans2/ans.py +++ b/bin/tests/system/qmin/ans2/ans.py @@ -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 diff --git a/bin/tests/system/qmin/ns1/root.db b/bin/tests/system/qmin/ns1/root.db index 294111df4df..3b38a33bbdc 100644 --- a/bin/tests/system/qmin/ns1/root.db +++ b/bin/tests/system/qmin/ns1/root.db @@ -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 diff --git a/bin/tests/system/qmin/ns7/named.conf.in b/bin/tests/system/qmin/ns7/named.conf.in index 84472ca92af..0f69d2d26ba 100644 --- a/bin/tests/system/qmin/ns7/named.conf.in +++ b/bin/tests/system/qmin/ns7/named.conf.in @@ -39,3 +39,11 @@ zone "." { type hint; file "../../common/root.hint"; }; + +zone "fwd." IN { + type forward; + forwarders { + 10.53.0.2; + }; + forward only; +}; diff --git a/bin/tests/system/qmin/tests.sh b/bin/tests/system/qmin/tests.sh index b88df3dd046..ee2e2531953 100755 --- a/bin/tests/system/qmin/tests.sh +++ b/bin/tests/system/qmin/tests.sh @@ -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