diff --git a/src/knot/events/handlers/refresh.c b/src/knot/events/handlers/refresh.c
index e73adb310ee2da27e386c2f3447897fd4f7468fd..4204374752abcb7c79093841443828a75ca3e523 100644
--- a/src/knot/events/handlers/refresh.c
+++ b/src/knot/events/handlers/refresh.c
@@ -1082,7 +1082,7 @@ static int transfer_consume(knot_layer_t *layer, knot_pkt_t *pkt)
 	if (data->expire_timer < 2) {
 		REFRESH_LOG(LOG_WARNING, data, LOG_DIRECTION_NONE,
 		            "remote is expired, ignoring");
-		return KNOT_STATE_FAIL;
+		return KNOT_STATE_IGNORE;
 	}
 
 	data->fallback_axfr = (data->xfr_type == XFR_TYPE_IXFR);
diff --git a/src/knot/query/layer.h b/src/knot/query/layer.h
index 252d043ae807c05fcfd13e96d31d217db6d18317..119ae5d6ac337ce0c86c012a685f50d9446a6fb5 100644
--- a/src/knot/query/layer.h
+++ b/src/knot/query/layer.h
@@ -34,6 +34,7 @@ typedef enum {
 	KNOT_STATE_DONE,       //!< Finished.
 	KNOT_STATE_FAIL,       //!< Error.
 	KNOT_STATE_FINAL,      //!< Finished and finalized.
+	KNOT_STATE_IGNORE,     //!< Data has been ignored.
 } knot_layer_state_t;
 
 typedef struct knot_layer_api knot_layer_api_t;
diff --git a/src/knot/query/requestor.c b/src/knot/query/requestor.c
index 8e27c830fd04269259d976728968cc4a0b9be679..8643f740fb7613007161c10d87a9e090d1439687 100644
--- a/src/knot/query/requestor.c
+++ b/src/knot/query/requestor.c
@@ -355,10 +355,15 @@ int knot_requestor_exec(knot_requestor_t *requestor, knot_request_t *request,
 	}
 
 	/* Expect complete request. */
-	if (requestor->layer.state != KNOT_STATE_DONE) {
-		ret = KNOT_EPROCESSING;
-	} else {
+	switch (requestor->layer.state) {
+	case KNOT_STATE_DONE:
 		request->flags |= KNOT_REQUEST_KEEP;
+		break;
+	case KNOT_STATE_IGNORE:
+		ret = KNOT_ERROR;
+		break;
+	default:
+		ret = KNOT_EPROCESSING;
 	}
 
 	/* Verify last TSIG */