From 7b7a9e09a6beb2e2d20d66197bfdcb1ec3a588d2 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Tue, 17 Jun 2014 20:58:23 +0200
Subject: [PATCH] managesieve: Remove the client from clients-list at the very
 end of the destroy function. Parallel to identical Dovecot change for imap
 and pop3.

---
 src/managesieve/managesieve-client.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c
index 8a6b48342..0f15a9260 100644
--- a/src/managesieve/managesieve-client.c
+++ b/src/managesieve/managesieve-client.c
@@ -218,9 +218,6 @@ void client_destroy(struct client *client, const char *reason)
 		i_info("%s %s", reason, client_stats(client));
 	}
 
-	managesieve_client_count--;
-	DLLIST_REMOVE(&managesieve_clients, client);
-
 	if (client->command_pending) {
 		/* try to deinitialize the command */
 		i_assert(client->cmd.func != NULL);
@@ -263,6 +260,9 @@ void client_destroy(struct client *client, const char *reason)
 	sieve_deinit(&client->svinst);
 
 	pool_unref(&client->cmd.pool);
+
+	managesieve_client_count--;
+	DLLIST_REMOVE(&managesieve_clients, client);
 	pool_unref(&client->pool);
 
 	master_service_client_connection_destroyed(master_service);
-- 
GitLab