diff --git a/lib/resolve.c b/lib/resolve.c
index faefb2092fdc0523f39dd503278650c4d02d357c..3cf346fd421fe75be9f9600d0f44e2c1747e9323 100644
--- a/lib/resolve.c
+++ b/lib/resolve.c
@@ -233,7 +233,10 @@ int kr_resolve_consume(struct kr_request *request, knot_pkt_t *packet)
 	struct kr_query *qry = kr_rplan_current(rplan);
 
 	/* Empty resolution plan, push packet as the new query */
-	if (kr_rplan_empty(rplan)) {
+	if (packet && kr_rplan_empty(rplan)) {
+		if (!knot_wire_get_rd(packet->wire)) {
+			return KNOT_STATE_FAIL;
+		}
 		if (knot_pkt_init_response(request->answer, packet) != 0) {
 			return KNOT_STATE_FAIL;
 		}