[Imap-protocol] MOVE is a pipeline

Timo Sirainen tss at iki.fi
Tue Jun 15 11:25:45 PDT 2010


On Tue, 2010-06-15 at 10:53 -0700, Dan Karp wrote:


> > Oh, now I started also thinking about NOTIFY+QRESYNC combination where

> > you can tell it to send VANISHED replies at any time. If MOVE is

> > sending EXPUNGE/VANISHED replies and if client cares about which ones

> > of those were from MOVE, it couldn't really know since a VANISHED reply

> > might have been sent to client just before the server received MOVE

> > command.

>

> 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.)


But that's what I was trying to explain above that it doesn't
necessarily work when enough extensions are being used:

1. Client 1 enables QRESYNC, so it gets VANISHED (uidset) replies
instead of EXPUNGEs.

2. Client 1 enables NOTIFY extension and tells server that it can handle
any untagged replies at any time (basically enables IDLE without the
IDLE command being running).

3. Client 2 EXPUNGEs UID 123.

4. Client 1 sends UID MOVE 1 command.

5. Server sends VANISHED update to client 1.

6. Server starts processing UID MOVE command.

The result looks like:

C: a UID MOVE 1 elsewhere
S: * VANISHED 123
S: * VANISHED 1
S: a OK [UIDMOVE 1] Moved

I don't know if that's a big problem, but "EXPUNGEs can't be sent during
MOVE" is incompatible with QRESYNC+NOTIFY.



More information about the Imap-protocol mailing list