]> 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, 7 Feb 2020 08:29:07 +0000 (09:29 +0100)
lib/ns/client.c

index 47664cbdf033435f5e7186e2aa2784a47adcc633..d0653d2fa7a739375503a6d655607a33e3456bb2 100644 (file)
@@ -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);