3558. [bug] IXFR of a DLZ stored zone was broken. [RT #33331]
This commit is contained in:
2
CHANGES
2
CHANGES
@@ -1,3 +1,5 @@
|
||||
3558. [bug] IXFR of a DLZ stored zone was broken. [RT #33331]
|
||||
|
||||
3557. [bug] Reloading redirect zones was broken. [RT #33292]
|
||||
|
||||
3556. [maint] Added AAAA for D.ROOT-SERVERS.NET.
|
||||
|
||||
@@ -838,14 +838,6 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
FAILQ(DNS_R_NOTAUTH, "non-authoritative zone",
|
||||
question_name, question_class);
|
||||
is_dlz = ISC_TRUE;
|
||||
/*
|
||||
* DLZ only support full zone transfer, not incremental
|
||||
*/
|
||||
if (reqtype != dns_rdatatype_axfr) {
|
||||
mnemonic = "AXFR-style IXFR";
|
||||
reqtype = dns_rdatatype_axfr;
|
||||
}
|
||||
|
||||
} else {
|
||||
/*
|
||||
* not DLZ and not in normal zone table, we are
|
||||
@@ -857,12 +849,14 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
} else {
|
||||
/* zone table has a match */
|
||||
switch(dns_zone_gettype(zone)) {
|
||||
/* Master and slave zones are OK for transfer. */
|
||||
case dns_zone_master:
|
||||
case dns_zone_slave:
|
||||
case dns_zone_dlz:
|
||||
break; /* Master and slave zones are OK for transfer. */
|
||||
break;
|
||||
default:
|
||||
FAILQ(DNS_R_NOTAUTH, "non-authoritative zone", question_name, question_class);
|
||||
FAILQ(DNS_R_NOTAUTH, "non-authoritative zone",
|
||||
question_name, question_class);
|
||||
}
|
||||
CHECK(dns_zone_getdb(zone, &db));
|
||||
dns_db_currentversion(db, &ver);
|
||||
@@ -997,7 +991,7 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) {
|
||||
is_poll = ISC_TRUE;
|
||||
goto have_stream;
|
||||
}
|
||||
journalfile = dns_zone_getjournal(zone);
|
||||
journalfile = is_dlz ? NULL : dns_zone_getjournal(zone);
|
||||
if (journalfile != NULL)
|
||||
result = ixfr_rrstream_create(mctx,
|
||||
journalfile,
|
||||
|
||||
@@ -40,5 +40,35 @@ n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo "I:checking DLZ IXFR=2010062899 (less than serial) ($n)"
|
||||
ret=0
|
||||
$DIG $DIGOPTS ixfr=2010062899 example.com @10.53.0.1 +all > dig.out.ns1.test$n
|
||||
grep "example.com..*IN.IXFR" dig.out.ns1.test$n > /dev/null || ret=1
|
||||
grep "example.com..*10.IN.DNAME.example.net." dig.out.ns1.test$n > /dev/null || ret=1
|
||||
grep "example.com..*10.IN.NS.example.com." dig.out.ns1.test$n > /dev/null || ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo "I:checking DLZ IXFR=2010062900 (equal serial) ($n)"
|
||||
ret=0
|
||||
$DIG $DIGOPTS ixfr=2010062900 example.com @10.53.0.1 +all > dig.out.ns1.test$n
|
||||
grep "example.com..*IN.IXFR" dig.out.ns1.test$n > /dev/null || ret=1
|
||||
grep "example.com..*10.IN.DNAME.example.net." dig.out.ns1.test$n > /dev/null && ret=1
|
||||
grep "example.com..*10.IN.NS.example.com." dig.out.ns1.test$n > /dev/null && ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo "I:checking DLZ IXFR=2010062901 (greater than serial) ($n)"
|
||||
ret=0
|
||||
$DIG $DIGOPTS ixfr=2010062901 example.com @10.53.0.1 +all > dig.out.ns1.test$n
|
||||
grep "example.com..*IN.IXFR" dig.out.ns1.test$n > /dev/null || ret=1
|
||||
grep "example.com..*10.IN.DNAME.example.net." dig.out.ns1.test$n > /dev/null && ret=1
|
||||
grep "example.com..*10.IN.NS.example.com." dig.out.ns1.test$n > /dev/null && ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo "I:failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo "I:exit status: $status"
|
||||
exit $status
|
||||
|
||||
Reference in New Issue
Block a user