From abe5cf42b368df1e8e0be37a73ba4ede4c4e4d05 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Mon, 10 Jul 2017 10:36:56 +1000 Subject: [PATCH] 4649. [bug] The wrong zone was logged when a catalog zone is added. [RT #45520] --- CHANGES | 3 + bin/tests/system/catz/tests.sh | 280 +++++++++++++++++++-------------- lib/dns/catz.c | 2 + 3 files changed, 163 insertions(+), 122 deletions(-) diff --git a/CHANGES b/CHANGES index 5230eef12f..0bd2dd581d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +4649. [bug] The wrong zone was logged when a catalog zone is added. + [RT #45520] + 4648. [bug] "rndc reconfig" on a slave no longer causes all member zones of configured catalog zones to be removed from configuration. [RT #45310] diff --git a/bin/tests/system/catz/tests.sh b/bin/tests/system/catz/tests.sh index 7598228137..8dead2d1e8 100644 --- a/bin/tests/system/catz/tests.sh +++ b/bin/tests/system/catz/tests.sh @@ -64,16 +64,19 @@ do } try=`expr $try + 1` done -try=0 -while test $try -lt 45 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom1.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 45 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom1.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` @@ -205,16 +208,19 @@ do } try=`expr $try + 1` done -try=0 -while test $try -lt 45 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom4.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 45 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom4.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` @@ -263,22 +269,27 @@ try=0 while test $try -lt 45 do sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "catz: adding zone 'dom2.example' from catalog 'catalog1.example'" > /dev/null && sed -n "$cur,"'$p' < ns2/named.run | grep "catz: adding zone 'dom3.example' from catalog 'catalog1.example'" > /dev/null && { ret=0 break } try=`expr $try + 1` done -try=0 -while test $try -lt 45 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom3.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 45 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom2.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom3.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` @@ -354,17 +365,19 @@ do } try=`expr $try + 1` done - -try=0 -while test $try -lt 45 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom5.example/IN' from 10.53.0.3#5300: Transfer status: success" > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 45 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom5.example/IN' from 10.53.0.3#5300: Transfer status: success" > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` @@ -445,17 +458,19 @@ do } try=`expr $try + 1` done - -try=0 -while test $try -lt 120 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom6.example/IN' from " > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 120 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom6.example/IN' from " > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` @@ -571,16 +586,19 @@ do } try=`expr $try + 1` done -try=0 -while test $try -lt 45 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom7.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 45 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom7.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` @@ -776,16 +794,19 @@ do } try=`expr $try + 1` done -try=0 -while test $try -lt 45 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom9.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 45 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom9.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` @@ -887,16 +908,19 @@ do } try=`expr $try + 1` done -try=0 -while test $try -lt 45 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 45 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'this.is.a.very.very.long.long.long.domain.that.will.cause.catalog.zones.to.generate.hash.instead.of.using.regular.filename.dom10.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` @@ -1010,16 +1034,19 @@ do } try=`expr $try + 1` done -try=0 -while test $try -lt 45 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom11.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 45 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom11.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` @@ -1086,16 +1113,19 @@ do } try=`expr $try + 1` done -try=0 -while test $try -lt 45 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'subdomain.of.dom11.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 45 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'subdomain.of.dom11.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` @@ -1262,16 +1292,19 @@ do } try=`expr $try + 1` done -try=0 -while test $try -lt 45 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom12.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 45 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom12.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` @@ -1396,16 +1429,19 @@ do } try=`expr $try + 1` done -try=0 -while test $try -lt 45 -do - sleep 1 - sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom13.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { - ret=0 - break - } - try=`expr $try + 1` -done +if [ $ret = 0 ]; then + ret=1 + try=0 + while test $try -lt 45 + do + sleep 1 + sed -n "$cur,"'$p' < ns2/named.run | grep "transfer of 'dom13.example/IN' from 10.53.0.1#5300: Transfer status: success" > /dev/null && { + ret=0 + break + } + try=`expr $try + 1` + done +fi if [ $ret != 0 ]; then echo "I: failed"; fi status=`expr $status + $ret` diff --git a/lib/dns/catz.c b/lib/dns/catz.c index d41f1096a2..c6a78ae986 100644 --- a/lib/dns/catz.c +++ b/lib/dns/catz.c @@ -487,6 +487,8 @@ dns_catz_zones_merge(dns_catz_zone_t *target, dns_catz_zone_t *newzone) { { dns_catz_entry_t *entry; isc_ht_iter_current(iteradd, (void **) &entry); + + dns_name_format(&entry->name, zname, DNS_NAME_FORMATSIZE); result = addzone(entry, target, target->catzs->view, target->catzs->taskmgr, target->catzs->zmm->udata);