From 2e0808045ffffac792498b422ef8f22bd980192d Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 22 Oct 2025 21:19:29 +0300 Subject: [PATCH] anvil: Fix memory leak when kicking clients --- src/anvil/admin-client-pool.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/anvil/admin-client-pool.c b/src/anvil/admin-client-pool.c index d4b6e3177a..83511a4bca 100644 --- a/src/anvil/admin-client-pool.c +++ b/src/anvil/admin-client-pool.c @@ -45,6 +45,7 @@ void admin_client_pool_deinit(struct admin_client_pool **_pool) array_foreach_elem(&pool->clients, client) { i_assert(client->refcount == 0); admin_client_unref(&client->client); + i_free(client); } array_free(&pool->clients); i_free(pool->base_dir); @@ -64,8 +65,11 @@ static void admin_client_pool_cleanup(struct admin_client_pool *pool) break; if (pool->idle_connection_count == 0) break; - if (clients[i-1]->refcount == 0) { - admin_client_unref(&clients[i-1]->client); + + struct admin_client_ref *client = clients[i-1]; + if (client->refcount == 0) { + admin_client_unref(&client->client); + i_free(client); array_delete(&pool->clients, i-1, 1); } } -- 2.47.3