commit 58e35bc74b2a41a641a03b8d9f6da3320a548c6e
Author: Oswald Buddenhagen <[email protected]>
Date: Sun Oct 3 14:31:30 2010 +0200
fix UIDNEXT handling
UIDNEXT *can* be legally zero, so deal with it.
src/drv_imap.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/drv_imap.c b/src/drv_imap.c
index 757ba48..cb45970 100644
--- a/src/drv_imap.c
+++ b/src/drv_imap.c
@@ -910,7 +910,7 @@ parse_response_code( imap_store_t *ctx, struct imap_cmd
*cmd, char *s )
return RESP_BAD;
}
} else if (!strcmp( "UIDNEXT", arg )) {
- if (!(arg = next_arg( &s )) || !(ctx->uidnext = atoi( arg ))) {
+ if (!(arg = next_arg( &s )) || (ctx->uidnext = strtol( arg, &p,
10 ), *p)) {
error( "IMAP error: malformed NEXTUID status\n" );
return RESP_BAD;
}
@@ -1553,6 +1553,8 @@ imap_select( store_t *gctx, int minuid, int maxuid, int
*excs, int nexcs,
prefix = ctx->prefix;
}
+ ctx->uidnext = -1;
+
cmd->param.create = (gctx->opts & OPEN_CREATE) != 0;
cmd->param.trycreate = 1;
if ((ret = imap_exec_b( ctx, cmd, "SELECT \"%s%s\"", prefix, gctx->name
)) != DRV_OK)
@@ -1577,7 +1579,7 @@ imap_select( store_t *gctx, int minuid, int maxuid, int
*excs, int nexcs,
goto bail;
}
if (maxuid == INT_MAX)
- maxuid = ctx->uidnext ? ctx->uidnext - 1 : 1000000000;
+ maxuid = ctx->uidnext >= 0 ? ctx->uidnext - 1 :
1000000000;
if (maxuid >= minuid &&
(ret = imap_exec_b( ctx, 0, "UID FETCH %d:%d (UID%s%s)",
minuid, maxuid,
(gctx->opts & OPEN_FLAGS) ? " FLAGS" :
"",
------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
isync-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/isync-devel