changeset 19658:3cc8fb81e7f9

imap: Send all pending tagged command replies before APPEND is started. This probably doesn't matter a lot, but it's cleaner. One side effect of this change is that if multiple APPENDs are pipelined (without MULTIAPPEND) on the selected mailbox, this now performs a sync between each APPEND and sends the EXISTS replies. This may be slightly lower in performance, but it's also slightly more correct behavior.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 28 Jan 2016 15:36:58 +0200
parents ea87c511c6c8
children c198a998082c
files src/imap/imap-commands.c
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap/imap-commands.c	Thu Jan 28 15:16:29 2016 +0200
+++ b/src/imap/imap-commands.c	Thu Jan 28 15:36:58 2016 +0200
@@ -20,7 +20,11 @@
 	{ "LOGOUT",		cmd_logout,      COMMAND_FLAG_BREAKS_MAILBOX },
 	{ "NOOP",		cmd_noop,        COMMAND_FLAG_BREAKS_SEQS },
 
-	{ "APPEND",		cmd_append,      COMMAND_FLAG_BREAKS_SEQS },
+	{ "APPEND",		cmd_append,      COMMAND_FLAG_BREAKS_SEQS |
+						 /* finish syncing and sending
+						    all tagged commands before
+						    we wait for APPEND input */
+						 COMMAND_FLAG_BREAKS_MAILBOX },
 	{ "EXAMINE",		cmd_examine,     COMMAND_FLAG_BREAKS_MAILBOX },
 	{ "CREATE",		cmd_create,      0 },
 	{ "DELETE",		cmd_delete,      COMMAND_FLAG_BREAKS_MAILBOX |