changeset 19422:1217e5610865

imap: Free mail_user only after client is disconnected.
author Timo Sirainen <tss@iki.fi>
date Fri, 27 Nov 2015 14:01:14 +0200
parents 82e6a3baa001
children d4e5b4ab01dd
files src/imap/imap-client.c
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap/imap-client.c	Fri Nov 27 13:59:22 2015 +0200
+++ b/src/imap/imap-client.c	Fri Nov 27 14:01:14 2015 +0200
@@ -367,7 +367,6 @@
 			mail_user_get_anvil_userip_ident(client->user),
 			"\n", NULL));
 	}
-	mail_user_unref(&client->user);
 
 	if (client->free_parser != NULL)
 		imap_parser_unref(&client->free_parser);
@@ -386,6 +385,10 @@
 	if (client->fd_in != client->fd_out)
 		net_disconnect(client->fd_out);
 
+	/* Free the user after client is already disconnected. It may start
+	   some background work like autoexpunging. */
+	mail_user_unref(&client->user);
+
 	if (array_is_created(&client->search_saved_uidset))
 		array_free(&client->search_saved_uidset);
 	if (array_is_created(&client->search_updates))