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/",