static int do_transfer(dns_zone_t* zone, uint32_t serial) {
dns_xfrin_t* xfrin = NULL;
dns_rdatatype_t xfrtype;
+ int r;
// Try an incremental xfr if we have a serial
if (serial) {
DNS_TRANSPORT_NONE, ctx.transport, ctx.tlsctx_cache, ctx.memctx, &xfrin);
// Start the transfer
- return dns_xfrin_start(xfrin, transfer_done);
+ r = dns_xfrin_start(xfrin, transfer_done);
+ switch (r) {
+ case ISC_R_SUCCESS:
+ break;
+
+ default:
+ ERROR("Failed to initialize zone transfer: %s\n", isc_result_totext(r));
+ goto ERROR;
+ }
+
+ return r;
+
+ERROR:
+ zone_done(zone);
+ return r;
}
static isc_result_t zone_loaded(void* data) {