From: Marek Vavrusa Date: Tue, 27 Sep 2016 20:14:36 +0000 (+0000) Subject: daemon/worker: set query source addr for tcp X-Git-Tag: v1.2.0-rc1~100 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9bf4651235660c8c5d7bc61b92d4eae4b98aa94b;p=thirdparty%2Fknot-resolver.git daemon/worker: set query source addr for tcp --- diff --git a/daemon/worker.c b/daemon/worker.c index c07e5c9e1..97906d6cf 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -917,7 +917,12 @@ int worker_process_tcp(struct worker_ctx *worker, uv_stream_t *handle, const uin * to buffer incoming message until it's complete. */ if (!session->outgoing) { if (!task) { - task = qr_task_create(worker, (uv_handle_t *)handle, NULL); + /* Get TCP peer name, keep zeroed address if it fails. */ + struct sockaddr_storage addr; + memset(&addr, 0, sizeof(addr)); + int addr_len = sizeof(addr); + uv_tcp_getpeername((uv_tcp_t *)handle, (struct sockaddr *)&addr, &addr_len); + task = qr_task_create(worker, (uv_handle_t *)handle, (struct sockaddr *)&addr); if (!task) { return kr_error(ENOMEM); }