MBOX-Line: From dave at cridland.net  Wed Jun 16 02:53:21 2010
To: imap-protocol@u.washington.edu
From: Dave Cridland <dave@cridland.net>
Date: Fri Jun  8 12:34:44 2018
Subject: [Imap-protocol] MOVE is a pipeline
In-Reply-To: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com>
References: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com>
Message-ID: <15361.1276682001.982472@puncture>

On Tue Jun 15 17:26:50 2010, Dan Karp wrote:
> > > Would it be unreasonable to state that the only untagged EXPUNGE
> > > responses from a MOVE command may be those directly resulting  
> from
> > > the MOVE? (UID MOVE, like UID FETCH, would have no such
> > > constraints.)
> >
> > That requires an amendment to RFC 3501 7.4.1.
> 
> Good form would be to amend it in any case.  MOVE would definitely
> fall into the category of commands for which EXPUNGEs from other
> sources would cause loss of synchronization, and thus it needs to
> be added to the list in 7.4.1.
> 
> 
I'm missing the reason why.

I was assuming that it'd look like:

C: t UID MOVE 1:10
S: * OK [COPYUID 1234 1:10 2:11] This response is optional
S: * VANISHED 1:10
S: t OK Moved, and grooved.

Or, without using UID, and without UIDPLUS or QRESYNC:

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.

Are there likely to be server implementations which cannot do partial  
expunges for some reason, by the way? As in, I model a MOVE as  
COPY/STORE/UID EXPUNGE, essentially, but should we allow it to be  
modelled as COPY/STORE/EXPUNGE?


> > Having MOVE issue untagged EXPUNGE responses is a problem, since  
> it
> > tempts server implementors to do a non-atomic move. It also makes  
> MOVE
> > chatty, and then results in pressure to add MOVE.SILENT or  
> MOVEANDCLOSE.
> 
> This is true to some extent, but even so it still makes MOVE  
> slightly
> less chatty than COPY/STORE.SILENT/EXPUNGE.  Certainly no more  
> chatty.
> And you can probably nip a (misguided) MOVE.SILENT in the bud at  
> this
> stage.

See above - this isn't terribly chatty at all, with the right  
extensions.

Dave.
-- 
Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net
  - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
  - http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade

