From 66142ee20aa74f0f1f427c3bf41a57bee9c798f3 Mon Sep 17 00:00:00 2001 From: Andreas Gustafsson Date: Thu, 10 Feb 2000 00:28:36 +0000 Subject: [PATCH] client leaked socket if shutdown was in progress when accept completed --- bin/named/client.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bin/named/client.c b/bin/named/client.c index e29148e4ba..ef55c76ed3 100644 --- a/bin/named/client.c +++ b/bin/named/client.c @@ -998,10 +998,15 @@ client_newconn(isc_task_t *task, isc_event_t *event) { client->interface->ntcpcurrent--; UNLOCK(&client->interface->lock); + /* + * We must take ownership of the new socket before the exit + * check to make sure it gets destroyed. + */ + client->tcpsocket = nevent->newsocket; + if (client->shuttingdown) { maybe_free(client); } else if (nevent->result == ISC_R_SUCCESS) { - client->tcpsocket = nevent->newsocket; INSIST(client->tcpmsg_valid == ISC_FALSE); dns_tcpmsg_init(client->mctx, client->tcpsocket, &client->tcpmsg);