From 8e6f01ae49b947ef51ae82710c578b8ccf6e1d15 Mon Sep 17 00:00:00 2001
From: Marek Vavrusa <marek.vavrusa@nic.cz>
Date: Tue, 3 Dec 2013 17:49:38 +0100
Subject: [PATCH] Fixed UDP query processing with mempool.

---
 src/knot/server/udp-handler.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/knot/server/udp-handler.c b/src/knot/server/udp-handler.c
index bb7a5b387..22bae7890 100644
--- a/src/knot/server/udp-handler.c
+++ b/src/knot/server/udp-handler.c
@@ -143,6 +143,9 @@ int udp_handle(ns_proc_context_t *query_ctx, int fd, sockaddr_t *addr,
 	        strfrom, sockaddr_portnum(addr));
 #endif
 
+	/* Create query processing context. */
+	ns_proc_begin(query_ctx, NS_PROC_QUERY);
+
 	/* Input packet. */
 	uint16_t tx_len = tx->iov_len;
 	int state = ns_proc_in(rx->iov_base, rx->iov_len, query_ctx);
@@ -165,7 +168,7 @@ int udp_handle(ns_proc_context_t *query_ctx, int fd, sockaddr_t *addr,
 	}
 
 	/* Reset context. */
-	ns_proc_reset(query_ctx);
+	ns_proc_finish(query_ctx);
 
 	return KNOT_EOK;
 
@@ -507,9 +510,6 @@ int udp_reader(iohandler_t *h, dthread_t *thread)
 	query_ctx.flags |= NS_QUERY_NO_AXFR;
 	query_ctx.flags |= NS_QUERY_NO_IXFR;
 
-	/* Create query processing context. */
-	ns_proc_begin(&query_ctx, NS_PROC_QUERY);
-
 	/* Chose select as epoll/kqueue has larger overhead for a
 	 * single or handful of sockets. */
 	fd_set fds;
@@ -571,9 +571,6 @@ int udp_reader(iohandler_t *h, dthread_t *thread)
 		}
 	}
 
-	/* Close query processing context. */
-	ns_proc_finish(&query_ctx);
-
 	_udp_deinit(rq);
 	ref_release((ref_t *)ref);
 	mp_delete(query_ctx.mm.ctx);
-- 
GitLab