2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 22:15:20 +00:00

851. [bug] Handle responses from servers which do not know

about IXFR.
This commit is contained in:
Mark Andrews
2001-06-01 15:22:56 +00:00
parent 989f808405
commit 3042b3e271
2 changed files with 20 additions and 1 deletions

View File

@@ -1,3 +1,6 @@
851. [bug] Handle responses from servers which do not know
about IXFR.
851. [cleanup] support-ixfr is obsolete, use request-ixfr.
850. [bug] dns_rbt_findnode() would not find nodes that were

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: xfrin.c,v 1.119 2001/05/31 10:38:01 tale Exp $ */
/* $Id: xfrin.c,v 1.120 2001/06/01 15:22:56 marka Exp $ */
#include <config.h>
@@ -1114,6 +1114,7 @@ xfrin_recv_done(isc_task_t *task, isc_event_t *ev) {
FAIL(result);
xfrin_log(xfr, ISC_LOG_DEBUG(3), "got %s, retrying with AXFR",
isc_result_totext(result));
try_axfr:
dns_message_destroy(&msg);
xfrin_reset(xfr);
xfr->reqtype = dns_rdatatype_soa;
@@ -1122,6 +1123,21 @@ xfrin_recv_done(isc_task_t *task, isc_event_t *ev) {
return;
}
/*
* Does the server know about IXFR? If it doesn't we will get
* a message with a empty answer section or a potentially a CNAME /
* DNAME, the later is handled by xfr_rr() which will return FORMERR
* if the first RR in the answer section is not a SOA record.
*/
if (xfr->reqtype == dns_rdatatype_ixfr &&
xfr->state == XFRST_INITIALSOA &&
msg->counts[DNS_SECTION_ANSWER] == 0) {
xfrin_log(xfr, ISC_LOG_DEBUG(3),
"empty answer section, retrying with AXFR");
goto try_axfr;
}
result = dns_message_checksig(msg, dns_zone_getview(xfr->zone));
if (result != ISC_R_SUCCESS) {
xfrin_log(xfr, ISC_LOG_DEBUG(3), "TSIG check failed: %s",