]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
CLOSE: Don't send any mailbox changes or HIGHESTMODSEQ to client.
authorTimo Sirainen <tss@iki.fi>
Fri, 5 Sep 2008 16:33:41 +0000 (19:33 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 5 Sep 2008 16:33:41 +0000 (19:33 +0300)
Also the previous code wasn't really even closing the mailbox.

--HG--
branch : HEAD

src/imap/cmd-close.c

index bcb2fa92aa3c0e560d22a4c5321678a770e92db0..6815799c1b1a8f9ef5a46e3969fede005422cb5c 100644 (file)
@@ -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 @@ bool cmd_close(struct client_command_context *cmd)
                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;
 }