QRESYNC: Invalid parameter list in Select

Jeroen van Meeuwen (Kolab Systems) vanmeeuwen at kolabsys.com
Wed Sep 14 04:26:52 EDT 2011


On 14.09.2011 08:42, Aleksander Machniak wrote:
> A bug or am I doing something wrong?
>

Not sure ;-)

> C: A0005 ENABLE QRESYNC
> S: * ENABLED QRESYNC CONDSTORE
> S: A0005 OK Completed
> C: A0006 SELECT INBOX (QRESYNC (1309794587 944))
> S: * ENABLED QRESYNC CONDSTORE
> S: A0006 BAD Invalid QRESYNC parameter list in Select
>

The first parameter is supposed to be the last known UIDVALIDITY - and 
the second one is supposed to be the last known modification sequence.

I think you got those right, as I seem to be able to reproduce:

Authenticated.
Security strength factor: 256
. SELECT INBOX
* 168 EXISTS
* 0 RECENT
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen KMAILFORWARDED 
KMAILTODO KMAILWATCHED KMAILIGNORED $FORWARDED $TODO $WATCHED $IGNORED)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen 
KMAILFORWARDED KMAILTODO KMAILWATCHED KMAILIGNORED $FORWARDED $TODO 
$WATCHED $IGNORED \*)] Ok
* OK [UNSEEN 168] Ok
* OK [UIDVALIDITY 1313508934] Ok
* OK [UIDNEXT 169] Ok
* OK [HIGHESTMODSEQ 20] Ok
* OK [URLMECH INTERNAL] Ok
. OK [READ-WRITE] Completed
. ENABLE QRESYNC CONDSTORE
* ENABLED QRESYNC CONDSTORE CONDSTORE
. OK Completed
. SELECT INBOX (QRESYNC (1313508934 20))
* ENABLED QRESYNC CONDSTORE
. BAD Invalid QRESYNC parameter list in Select

The RFC lists the latter two parameters are optional (known set of 
UIDs, known sequence ranges and their UIDs).

Telemetry logging on the backend shows me the following, though:

<1315987673<. Select {5+}^M
INBOX^M
>1315987674>* 168 EXISTS^M
* 0 RECENT^M
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen KMAILFORWARDED 
KMAILTODO KMAILWATCHED KMAILIGNORED $FORWARDED $TODO $WATCHED 
$IGNORED)^M
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen 
KMAILFORWARDED KMAILTODO KMAILWATCHED KMAILIGNORED $FORWARDED $TODO 
$WATCHED $IGNORED \*)] Ok^M
* OK [UNSEEN 168] Ok^M
* OK [UIDVALIDITY 1313508934] Ok^M
* OK [UIDNEXT 169] Ok^M
* OK [HIGHESTMODSEQ 20] Ok^M
* OK [URLMECH INTERNAL] Ok^M
. OK [READ-WRITE] Completed^M
<1315987773<PROXY0 Enable Qresync^M
>1315987774>* ENABLED QRESYNC CONDSTORE^M
PROXY0 OK Completed^M
<1315987774<. Select {5+}^M
INBOX (QRESYNC 1313508934 20)^M
>1315987774>. BAD Invalid QRESYNC parameter list in Select^M
<1315987934<Q01 LOGOUT^M
>1315987935>* BYE LOGOUT received^M
Q01 OK Completed^M

Notice how it is missing the necessary parentheses around the 
parameters when forwarding the QRESYNC command + parameters to the 
backend. I therefore think the issue is in or near 
http://git.cyrusimap.org/cyrus-imapd/tree/imap/imapd.c#n3756

-- 
Kind regards,

Jeroen van Meeuwen

-- 
Senior Engineer, Kolab Systems AG

e: vanmeeuwen at kolabsys.com
t: +44 144 340 9500
m: +44 74 2516 3817
w: http://www.kolabsys.com

pgp: 9342 BF08


More information about the Info-cyrus mailing list