diff --git a/lib/resolve.c b/lib/resolve.c
index 75fc3cd4363fa4b36e314d6649d3dad16dee9c7a..30fb5c906451260d82496659457479810aab0c30 100644
--- a/lib/resolve.c
+++ b/lib/resolve.c
@@ -367,8 +367,10 @@ int kr_resolve_produce(struct kr_request *request, struct sockaddr **dst, int *t
 	case KNOT_STATE_CONSUME: break;
 	case KNOT_STATE_DONE:
 	default: /* Current query is done */
+		if (qry->flags & QUERY_RESOLVED) {
+			kr_rplan_pop(rplan, qry);
+		}
 		knot_overlay_reset(&request->overlay);
-		kr_rplan_pop(rplan, qry);
 		return kr_rplan_empty(rplan) ? KNOT_STATE_DONE : KNOT_STATE_PRODUCE;
 	}