MBOX-Line: From slusarz at curecanti.org  Thu Jan 24 08:34:56 2013
To: imap-protocol@u.washington.edu
From: Michael M Slusarz <slusarz@curecanti.org>
Date: Fri Jun  8 12:34:50 2018
Subject: [Imap-protocol] Courier bug(?)
In-Reply-To: <1359001724.15093.140661181638845.41179852@webmail.messagingengine.com>
References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org>
	<CAKHUCzwJ8xq7O8vGDHe0D9Jviac06o-QtePMhKYV7HzwzRPMPA@mail.gmail.com>
	<1358846428.12608.2.camel@hurina>
	<20130123212037.Horde._IahQM6IYatHLw2AFgUPnw1@bigworm.curecanti.org>
	<1359001724.15093.140661181638845.41179852@webmail.messagingengine.com>
Message-ID: <20130124093456.Horde.GumxJDEby0tpe4DRTMul6g1@bigworm.curecanti.org>

Quoting Bron Gondwana <brong@fastmail.fm>:

> I always send UID for QRESYNC, and I even have a handy comment about it:
>
>     /* http://www.rfc-editor.org/errata_search.php?rfc=5162
>      * Errata ID: 1807 - MUST send UID and MODSEQ to all
>      * untagged FETCH unsolicited responses */
>     if (usinguid || state->qresync)
>         prot_printf(state->out, " UID %u", im->record.uid);
>     if (printmodseq || state->qresync)
>         prot_printf(state->out, " MODSEQ (" MODSEQ_FMT ")",  
> im->record.modseq);

Ugh.  I *knew* I previously read somewhere that UID was required for  
all FLAGS responses after QRESYNC was activated.  I was going to check  
the errata before sending out my original message, but got distracted.

And there is still a gap in coverage when only CONDSTORE is available  
(or a server implementation of QRESYNC that doesn't follow the errata)  
- you can still receive untagged FLAGS responses that contain MODSEQ  
but not UID data:

a SELECT INBOX (CONDSTORE)
[...]
* 3 EXISTS
* OK [HIGHESTMODSEQ 5] Highest
a OK [READ-WRITE] SELECT completed.
b UID FETCH 5 (UID)
* 1 FETCH (UID 5)
* 2 FETCH (FLAGS (\Seen) MODSEQ (6))
* 3 FETCH (FLAGS (\Seen) MODSEQ (6) UID 15)
b OK FETCH completed.

Granted, this isn't likely from a practical standpoint, but it is a  
possibility.  And one I probably haven't considered in my code.  Arrgh.

michael


