When querying the imap mailbox for all messages with UID in [1,inf],
isync currently hardcodes the upper limit to 1000000000, which can
actually be exceeded, which results in missing messages on the slave.

This is not merely theoretical: I missed a message with UID=1343495243
just now; and after raising that limit to 2000000000, I got all my
missing messages sync'ed successfully:
> diff -ur isync-1.2.1-orig/src/drv_imap.c isync-1.2.1/src/drv_imap.c
> --- isync-1.2.1-orig/src/drv_imap.c 2015-09-12 17:15:52.000000000 +0800
> +++ isync-1.2.1/src/drv_imap.c  2016-11-17 22:41:12.305619933 +0800
> @@ -2300,7 +2300,7 @@
>             imap_submit_load( ctx, buf, 0, sts );
>         }
>         if (maxuid == INT_MAX)
> -           maxuid = ctx->gen.uidnext ? ctx->gen.uidnext - 1 : 1000000000;
> +           maxuid = ctx->gen.uidnext ? ctx->gen.uidnext - 1 : 2000000000;
>         if (maxuid >= minuid) {
>             if ((ctx->gen.opts & OPEN_FIND) && minuid < newuid) {
>                 sprintf( buf, "%d:%d", minuid, newuid - 1 );

But this is only a quick and dirty workaround: what if the UID exceeds
2000000000?  By packet sniffering, I found Outlook Express using the
IMAP command `UID FETCH 0:*', which seems a reasonable way provided that
UIDs returned by the server does not overflow the integer type isync
uses for these numbers.

Any idea on this issue?

-- 
My current OpenPGP key:
RSA4096/0x227E8CAAB7AA186C (expires: 2020.10.19)
7077 7781 B859 5166 AE07 0286 227E 8CAA B7AA 186C


------------------------------------------------------------------------------
_______________________________________________
isync-devel mailing list
isync-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/isync-devel

Reply via email to