]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Don't check if the client is on recursing list (requires locking) if it's not RECURSING
authorWitold Kręcicki <wpk@isc.org>
Tue, 28 Jan 2020 09:31:35 +0000 (10:31 +0100)
committerWitold Kręcicki <wpk@isc.org>
Fri, 28 Feb 2020 07:46:16 +0000 (08:46 +0100)
lib/ns/client.c

index 269ebe1366504a873dcec0daef836180d285a3bb..3a0a9c69f7e5c5f93ea25eb096d3c0fa15b3af45 100644 (file)
@@ -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);