CVS commit by ossi:
deal with UIDVALIDITY of 0 properly.
M +6 -3 drv_imap.c 1.38
M +4 -3 sync.c 1.88
--- isync/src/drv_imap.c #1.37:1.38
@@ -883,5 +883,5 @@ static int
parse_response_code( imap_store_t *ctx, struct imap_cmd_cb *cb, char *s )
{
- char *arg, *p;
+ char *arg, *earg, *p;
if (*s != '[')
@@ -895,5 +895,7 @@ parse_response_code( imap_store_t *ctx,
arg = next_arg( &s );
if (!strcmp( "UIDVALIDITY", arg )) {
- if (!(arg = next_arg( &s )) || !(ctx->gen.uidvalidity = atoi(
arg ))) {
+ if (!(arg = next_arg( &s )) ||
+ (ctx->gen.uidvalidity = strtoll( arg, &earg, 10 ), *earg))
+ {
error( "IMAP error: malformed UIDVALIDITY status\n" );
return RESP_BAD;
@@ -913,5 +915,6 @@ parse_response_code( imap_store_t *ctx,
error( "*** IMAP ALERT *** %s\n", p );
} else if (cb && cb->ctx && !strcmp( "APPENDUID", arg )) {
- if (!(arg = next_arg( &s )) || !(ctx->gen.uidvalidity = atoi(
arg )) ||
+ if (!(arg = next_arg( &s )) ||
+ (ctx->gen.uidvalidity = strtoll( arg, &earg, 10 ), *earg) ||
!(arg = next_arg( &s )) || !(*(int *)cb->ctx = atoi( arg )))
{
--- isync/src/sync.c #1.87:1.88
@@ -471,4 +471,5 @@ sync_boxes( store_t *ctx[], const char *
svars->ctx[1] = ctx[1];
svars->chan = chan;
+ svars->uidval[0] = svars->uidval[1] = -1;
svars->srecadd = &svars->srecs;
@@ -477,5 +478,5 @@ sync_boxes( store_t *ctx[], const char *
(!names[t] || (ctx[t]->conf->map_inbox && !strcmp(
ctx[t]->conf->map_inbox, names[t] ))) ?
"INBOX" : names[t];
- ctx[t]->uidvalidity = 0;
+ ctx[t]->uidvalidity = -1;
svars->drv[t] = ctx[t]->conf->driver;
svars->drv[t]->prepare_paths( ctx[t] );
@@ -863,5 +864,5 @@ box_selected( int sts, void *aux )
if (check_ret( sts, svars, t ))
return 1;
- if (svars->uidval[t] && svars->uidval[t] != svars->ctx[t]->uidvalidity)
{
+ if (svars->uidval[t] >= 0 && svars->uidval[t] !=
svars->ctx[t]->uidvalidity) {
error( "Error: UIDVALIDITY of %s changed (got %d, expected
%d)\n",
str_ms[t], svars->ctx[t]->uidvalidity,
svars->uidval[t] );
@@ -1057,5 +1058,5 @@ msgs_found_sel( sync_vars_t *svars, int
return 0;
- if (!svars->uidval[M] || !svars->uidval[S]) {
+ if (svars->uidval[M] < 0 || svars->uidval[S] < 0) {
svars->uidval[M] = svars->ctx[M]->uidvalidity;
svars->uidval[S] = svars->ctx[S]->uidvalidity;
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
isync-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/isync-devel