RFC 5162 [3.1] states that a QRESYNC should return all changes in a
SELECT/EXAMINE since the given modseq. In the following case, it
looks like there is an off-by-1 error somewhere:
C: A64 SELECT "TestMailboxTest" (QRESYNC (1224531494 6 1,3:5))
[MMS: MODSEQ given is 6]
S: * OK [CLOSED]
S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
S: * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)]
Flags permitted.
S: * 4 EXISTS
S: * 0 RECENT
S: * OK [UNSEEN 1] First unseen.
S: * OK [UIDVALIDITY 1224531494] UIDs valid
S: * OK [UIDNEXT 6] Predicted next UID
S: * OK [HIGHESTMODSEQ 6]
[MMS: HIGHESTMODSEQ is 6 - the same as our cache, so there should be
no need for an update]
S: * 2 FETCH (MODSEQ (6) UID 3 FLAGS (\Deleted))
[MMS: ...but we get this FETCH that contains the MODSEQ ID of 6, which
we have already told the server we are aware of]
S: A64 OK [READ-WRITE] Select completed.
In other words, I don't think that "2 FETCH ..." should be in the
server response - it is duplicative information as to what is already
cached on the client.
michael