diff --git a/src/libknot/nameserver/name-server.c b/src/libknot/nameserver/name-server.c
index 1a38fd33350bea12648c15009dedb00b94dfd414..219f37a62cabc17e13f387e4595ee2796aab09a4 100644
--- a/src/libknot/nameserver/name-server.c
+++ b/src/libknot/nameserver/name-server.c
@@ -4132,7 +4132,14 @@ int ns_proc_in(const uint8_t *wire, uint16_t wire_len, ns_proc_context_t *ctx)
 	/* #10 implement */
 	knot_pkt_t *pkt = knot_pkt_new((uint8_t *)wire, wire_len, &ctx->mm);
 	knot_pkt_parse(pkt, 0);
-	ctx->state = ctx->module->in(pkt, ctx);
+
+	switch(ctx->state) {
+	case NS_PROC_MORE: ctx->state = ctx->module->in(pkt, ctx); break;
+	default:
+		assert(0); /* Improper use. */
+		return NS_PROC_NOOP;
+	}
+
 	return ctx->state;
 }
 
@@ -4144,7 +4151,9 @@ int ns_proc_out(uint8_t *wire, uint16_t *wire_len, ns_proc_context_t *ctx)
 	switch(ctx->state) {
 	case NS_PROC_FULL: ctx->state = ctx->module->out(pkt, ctx); break;
 	case NS_PROC_FAIL: ctx->state = ctx->module->err(pkt, ctx); break;
-	default:           return NS_PROC_NOOP;
+	default:
+		assert(0); /* Improper use. */
+		return NS_PROC_NOOP;
 	}
 
 	*wire_len = pkt->size;