Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8157:5ca8140fcc95 HEAD
CLOSE: Don't send any mailbox changes or HIGHESTMODSEQ to client.
Also the previous code wasn't really even closing the mailbox.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 05 Sep 2008 19:33:41 +0300 |
parents | f77a285629a5 |
children | ad3ac0cb4573 |
files | src/imap/cmd-close.c |
diffstat | 1 files changed, 9 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/src/imap/cmd-close.c Fri Sep 05 19:22:07 2008 +0300 +++ b/src/imap/cmd-close.c Fri Sep 05 19:33:41 2008 +0300 @@ -4,16 +4,6 @@ #include "commands.h" #include "imap-expunge.h" -static void cmd_close_finish(struct client *client) -{ - client_search_updates_free(client); - if (mailbox_close(&client->mailbox) < 0) { - client_send_untagged_storage_error(client, - mailbox_get_storage(client->mailbox)); - } - client_update_mailbox_flags(client, NULL); -} - bool cmd_close(struct client_command_context *cmd) { struct client *client = cmd->client; @@ -25,26 +15,18 @@ return TRUE; i_assert(client->mailbox_change_lock == NULL); - client->mailbox_change_lock = cmd; + client->mailbox = NULL; storage = mailbox_get_storage(mailbox); if ((ret = imap_expunge(mailbox, NULL)) < 0) client_send_untagged_storage_error(client, storage); + if (mailbox_sync(mailbox, 0, 0, NULL) < 0) + client_send_untagged_storage_error(client, storage); - if ((client->enabled_features & MAILBOX_FEATURE_QRESYNC) != 0 && - ret > 0) { - /* we expunged something. since we're sending updated - HIGHESTMODSEQ make sure the client sees all changes up to - it by syncing the mailbox one last time. We wouldn't need - to include our own expunge in there, but it's too much - trouble to hide it. */ - return cmd_sync(cmd, MAILBOX_SYNC_FLAG_EXPUNGE, - IMAP_SYNC_FLAG_SAFE, "OK Close completed."); - } else { - if (mailbox_sync(mailbox, 0, 0, NULL) < 0) - client_send_untagged_storage_error(client, storage); - cmd_close_finish(client); - client_send_tagline(cmd, "OK Close completed."); - return TRUE; - } + if (mailbox_close(&mailbox) < 0) + client_send_untagged_storage_error(client, storage); + client_update_mailbox_flags(client, NULL); + + client_send_tagline(cmd, "OK Close completed."); + return TRUE; }