From: Marek VavruĊĦa Date: Tue, 14 Jul 2015 11:22:38 +0000 (+0200) Subject: daemon/io: fix closing TCP sockets without worker knowing it X-Git-Tag: v1.0.0-beta1~77^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f8c70b174ade1310b379f840f274628b5cb6e644;p=thirdparty%2Fknot-resolver.git daemon/io: fix closing TCP sockets without worker knowing it --- diff --git a/daemon/io.c b/daemon/io.c index 04dda6923..f43baf7f0 100644 --- a/daemon/io.c +++ b/daemon/io.c @@ -59,7 +59,7 @@ void udp_recv(uv_udp_t *handle, ssize_t nread, const uv_buf_t *buf, } knot_pkt_t *query = knot_pkt_new(buf->base, nread, worker->mm); - query->max_size = sizeof(worker->wire_buf); + query->max_size = KNOT_WIRE_MAX_PKTSIZE; worker_exec(worker, (uv_handle_t *)handle, query, addr); knot_pkt_free(&query); } @@ -91,12 +91,11 @@ static void tcp_recv(uv_stream_t *handle, ssize_t nread, const uv_buf_t *buf) uv_loop_t *loop = handle->loop; struct worker_ctx *worker = loop->data; - /* Check for originator connection close */ - if (nread <= 0 && handle->data == 0) { - io_close((uv_handle_t *)handle); - return; - } else if (nread < 2) { - /* Not enough bytes to read length */ + /* Check for originator connection close / not enough bytes */ + if (nread < 2) { + if (!handle->data) { + /* @todo Notify the endpoint if master socket */ + } worker_exec(worker, (uv_handle_t *)handle, NULL, NULL); return; }