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

Reply via email to