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;
 }