Re: [Imap-protocol] Missing UIDNEXT during mailbox synchronization

Michael M Slusarz <[email protected]>
Newsgroups gmane.mail.imap.general
Message-ID <20121231133118.Horde.U5PPDhJmrIJk-ldhlJw3KQ1@bigworm.curecanti.org>
Quoting Bron Gondwana <[email protected]>:

>> > > The more interesting question is: what do you need to know it  
>> for anyway?
>> >
>> > To determine if the mailbox has changed to prevent an issuance of an
>> > unneeded FETCH/SORT command.  Flag changes are irrelevant (if
>> > CONDSTORE isn't available), since clients can be designed to not care
>> > about these changes
>>
>> Fair enough I guess, if you really don't need the data from those  
>> intermediate
>> records.  Otherwise you may as well just do fetch $olduid+1:*  
>> (stuff you need),
>> which will be the same number of round trips as your solution in the trivial
>> case, and one fewer in the case where there is new data to know.

If UIDNEXT doesn't change, why would you be doing a fetch?

>> Let's play make believe for a second with Cyrus though:
>>
>> . select inbox
>> * 2 EXISTS
>> * 2 RECENT
>> * FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
>> * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] Ok
>> * OK [UNSEEN 1] Ok
>> * OK [UIDVALIDITY 1356732706] Ok
>> * OK [UIDNEXT 3] Ok
>> * OK [HIGHESTMODSEQ 5] Ok
>> * OK [URLMECH INTERNAL] Ok
>> * OK [ANNOTATIONS 65536] Ok
>> . OK [READ-WRITE] Completed
>> . fetch 1:* (uid)
>> * 1 FETCH (UID 1)
>> * 2 FETCH (UID 2)
>> . OK Completed (0.000 sec)
>> . fetch * (uid)
>> * 2 FETCH (UID 2)
>> . OK Completed (0.000 sec
>
> Sorry - cat on keyboard failure.

I have a dog, so I tend to not have these kind of issues :).

> )
> . store 2 +flags \Deleted
> * 2 FETCH (FLAGS (\Recent \Deleted))
> . OK Completed
> . expunge
> * 2 EXPUNGE
> . OK [HIGHESTMODSEQ 7] Completed
> . fetch * (uid)
> * 1 FETCH (UID 1)
> . OK Completed (0.000 sec)
>
> That definitely doesn't work!

Why not?  The stored UIDNEXT != the cached UIDNEXT.  So something is  
up and the client should issue FETCH's to retrieve further  
information.  UIDNEXT's have nothing to do with the actual next  
assigned UID, so I don't care if it is incrementing or decrementing.   
It only matters if it is different.

> . uid fetch * (uid)
> . OK Completed (0.000 sec)

I may have mis-typed before.  A UID FETCH * is not useful - it should  
be a FETCH * (UID) used instead to determine the last UID in the  
mailbox.  And if the mailbox is empty, I agree that the actual UIDNEXT  
value can't be determined.  In our client, we clear the UIDNEXT and  
cache so the next time a message is seen the cache is restart/rebuilt.

michael

_______________________________________________
Imap-protocol mailing list
[email protected]
http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.