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-Tag: v9.17.1~90^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=938b61405b550a31337e39415669bd3a1b8e7a25;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 269ebe13665..3a0a9c69f7e 100644 --- a/lib/ns/client.c +++ b/lib/ns/client.c @@ -199,11 +199,14 @@ 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);