MBOX-Line: From dkarp at zimbra.com  Wed Jun 16 05:11:49 2010
To: imap-protocol@u.washington.edu
From: Dan Karp <dkarp@zimbra.com>
Date: Fri Jun  8 12:34:44 2018
Subject: [Imap-protocol] MOVE is a pipeline
In-Reply-To: <15361.1276682001.982472@puncture>
Message-ID: <11418747.5765.1276690309071.JavaMail.root@dogfood.zimbra.com>

> C: t MOVE 1:10
> S: * EXPUNGE 1
> S: * EXPUNGE 2
> S: * EXPUNGE 3
> // ...
> S: t OK Moved, and grooved.
> 
> As long as clients expect there to be potentially more, or fewer,
> expunges, then there's no loss of synchronization, as far as I can
> tell, even if expunged fail for the MOVE itself, yet occur as a
> result of unrelated actions.

It's the same issue addressed by RFC 3501 section 7.4.1:

      An EXPUNGE response MUST NOT be sent when no command is in
      progress, nor while responding to a FETCH, STORE, or SEARCH
      command.  This rule is necessary to prevent a loss of
      synchronization of message sequence numbers between client and
      server.  A command is not "in progress" until the complete command
      has been received; in particular, a command is not "in progress"
      during the negotiation of command continuation.

MOVE falls into the same category as FETCH, STORE, and SEARCH.

