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