]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Remove closed connections from the parent's tracking list
authorNick Porter <nick@portercomputing.co.uk>
Thu, 17 Aug 2023 17:01:14 +0000 (18:01 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Thu, 17 Aug 2023 17:01:14 +0000 (18:01 +0100)
src/lib/io/master.c

index 6ea24d45d2c57c9421bab003c7645f31916cef90..b17942d4999e1b203a59d574c0d9e9cb9a7821f9 100644 (file)
@@ -2574,6 +2574,7 @@ static int mod_close(fr_listen_t *li)
        fr_io_instance_t const *inst;
        fr_io_connection_t *connection;
        fr_listen_t *child;
+       fr_io_client_t *parent;
 
        get_inst(li, &inst, NULL, &connection, &child);
 
@@ -2597,6 +2598,15 @@ static int mod_close(fr_listen_t *li)
        if (connection->client->pending) {
                TALLOC_FREE(connection->client->pending); /* for any pending packets */
        }
+
+       /*
+        *      Remove the connection from the parent's connection set
+        */
+       parent = connection->parent;
+       pthread_mutex_lock(&parent->mutex);
+       fr_hash_table_remove(parent->ht, connection);
+       pthread_mutex_unlock(&parent->mutex);
+
        talloc_free(connection->dl_inst);
 
        return 0;