From: Timo Sirainen Date: Mon, 19 Apr 2021 09:46:44 +0000 (+0300) Subject: imap: NOTIFY - Fix crash if client disconnects while sending FETCH notification ... X-Git-Tag: 2.3.15~65 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0a239a5ec9bbc647200659feff79532a09dc5f25;p=thirdparty%2Fdovecot%2Fcore.git imap: NOTIFY - Fix crash if client disconnects while sending FETCH notification (try #2) Continues the incomplete fix for c4f4058d16096f23eea0b3182205d6653f5954dd Fixes: Panic: Trying to close mailbox INBOX with open transactions --- diff --git a/src/imap/imap-client.c b/src/imap/imap-client.c index ffb1fdc748..1ae8c45963 100644 --- a/src/imap/imap-client.c +++ b/src/imap/imap-client.c @@ -463,12 +463,14 @@ static void client_default_destroy(struct client *client, const char *reason) if (client->input_lock != NULL) client_command_cancel(&client->input_lock); - if (client->mailbox != NULL) - imap_client_close_mailbox(client); if (client->notify_ctx != NULL) imap_notify_deinit(&client->notify_ctx); if (client->urlauth_ctx != NULL) imap_urlauth_deinit(&client->urlauth_ctx); + /* Keep mailbox closing close to last, so anything that could + potentially have transactions open will close them first. */ + if (client->mailbox != NULL) + imap_client_close_mailbox(client); if (client->anvil_sent) { master_service_anvil_send(master_service, t_strconcat( "DISCONNECT\t", my_pid, "\timap/",