diff --git a/src/knot/server/xfr-handler.c b/src/knot/server/xfr-handler.c
index 14e3353392ee4149ef137aedf3599396c7aab492..439db02195826e6473ea19abd371317004c6dde5 100644
--- a/src/knot/server/xfr-handler.c
+++ b/src/knot/server/xfr-handler.c
@@ -668,7 +668,7 @@ int xfr_process_event(xfrworker_t *w, int fd, knot_ns_xfr_t *data, uint8_t *buf,
 	}
 	
 	/* IXFR refused, try again with AXFR. */
-	if (zone && data->type == XFR_TYPE_IIN && ret == KNOT_EXFRREFUSED) {
+	if (data->type == XFR_TYPE_IIN && ret == KNOT_EXFRREFUSED) {
 		log_server_notice("%s Transfer failed, fallback to AXFR.\n",
 				  data->msgpref);
 		size_t bufsize = buflen;
@@ -1422,6 +1422,8 @@ static int xfr_process_request(xfrworker_t *w, uint8_t *buf, size_t buflen)
 		return KNOTD_ENOTRUNNING;
 	}
 	
+	rcu_read_lock();
+	
 	/* Update request. */
 	xfr.wire = buf;
 	xfr.wire_size = buflen;
@@ -1430,12 +1432,7 @@ static int xfr_process_request(xfrworker_t *w, uint8_t *buf, size_t buflen)
 	xfr_update_msgpref(&xfr, NULL);
 	
 	/* Check if not already processing. */
-	zonedata_t *zd = NULL;
-	if (xfr.zone != NULL) {
-		zd = (zonedata_t *)knot_zone_data(xfr.zone);
-	}
-	
-	rcu_read_lock();
+	zonedata_t *zd = (zonedata_t *)knot_zone_data(xfr.zone);
 	
 	/* Check if the zone is not discarded. */
 	if (knot_zone_flags(xfr.zone) & KNOT_ZONE_DISCARDED) {