If a zone transfer is canceled there is no need to try the
next primary or retry with AXFR.
{
xfrin_log(xfr, ISC_LOG_ERROR, "%s: %s", msg,
isc_result_totext(result));
- if (atomic_load(&xfr->is_ixfr)) {
+ if (atomic_load(&xfr->is_ixfr) &&
+ result != ISC_R_CANCELED &&
+ result != ISC_R_SHUTTINGDOWN)
+ {
/*
* Pass special result code to force AXFR retry
*/
inc_stats(zone, dns_zonestatscounter_xfrfail);
break;
+ case ISC_R_CANCELED:
+ case ISC_R_SHUTTINGDOWN:
+ dns_remote_reset(&zone->primaries, false);
+ break;
+
default:
next_primary:
/*