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:
3
CHANGES
3
CHANGES
@@ -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
|
||||
|
@@ -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",
|
||||
|
Reference in New Issue
Block a user