diff --git a/lib/dns/xfrin.c b/lib/dns/xfrin.c index 86aee0e21f..0f72656779 100644 --- a/lib/dns/xfrin.c +++ b/lib/dns/xfrin.c @@ -15,7 +15,7 @@ * SOFTWARE. */ -/* $Id: xfrin.c,v 1.80 2000/07/03 13:33:05 marka Exp $ */ +/* $Id: xfrin.c,v 1.81 2000/07/03 22:42:36 gson Exp $ */ #include @@ -312,6 +312,12 @@ static isc_result_t ixfr_init(dns_xfrin_ctx_t *xfr) { isc_result_t result; + if (xfr->reqtype != dns_rdatatype_ixfr) { + xfrin_log(xfr, ISC_LOG_ERROR, + "got incremental response to AXFR request"); + return (DNS_R_FORMERR); + } + xfr->is_ixfr = ISC_TRUE; INSIST(xfr->db != NULL); xfr->difflen = 0; @@ -443,8 +449,7 @@ xfr_rr(dns_xfrin_ctx_t *xfr, dns_name_t *name, isc_uint32_t ttl, * If the transfer begins with one SOA record, it is an AXFR, * if it begins with two SOAs, it is an IXFR. */ - if (xfr->reqtype == dns_rdatatype_ixfr && - rdata->type == dns_rdatatype_soa && + if (rdata->type == dns_rdatatype_soa && xfr->ixfr.request_serial == dns_soa_getserial(rdata)) { xfrin_log(xfr, ISC_LOG_DEBUG(3), "got incremental response");