From: Witold Kręcicki Date: Tue, 28 Jan 2020 09:31:35 +0000 (+0100) Subject: Don't check if the client is on recursing list (requires locking) if it's not RECURSING X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=41cec3a619bd604842a1de4d6953ff2a90b239f4;p=thirdparty%2Fbind9.git Don't check if the client is on recursing list (requires locking) if it's not RECURSING --- diff --git a/lib/ns/client.c b/lib/ns/client.c index 47664cbdf03..d0653d2fa7a 100644 --- a/lib/ns/client.c +++ b/lib/ns/client.c @@ -181,11 +181,13 @@ ns_client_endrequest(ns_client_t *client) { CTRACE("endrequest"); - LOCK(&client->manager->reclock); - if (ISC_LINK_LINKED(client, rlink)) { - ISC_LIST_UNLINK(client->manager->recursing, client, rlink); + if (client->state == NS_CLIENTSTATE_RECURSING) { + LOCK(&client->manager->reclock); + if (ISC_LINK_LINKED(client, rlink)) { + ISC_LIST_UNLINK(client->manager->recursing, client, rlink); + } + UNLOCK(&client->manager->reclock); } - UNLOCK(&client->manager->reclock); if (client->cleanup != NULL) { (client->cleanup)(client);