Revert "fix UIDNEXT handling"

in fact, UIDNEXT (and UIDVALIDITY) null is *not* allowed (see RFC3501
section 9). them popping up nonetheless was a dovecot bug (which would
also confuse dovecot itself).
having it in as a workaround was no good either, as quite some other
code in mbsync assumes that UIDs are not null.

This reverts commit e1fa867 and most of 39006d7.

-REFMAIL: 4CA62BA1.4020104@lemma.co.uk
This commit is contained in:
Oswald Buddenhagen 2011-06-02 12:43:05 +02:00
parent 233f563569
commit 9bbb02b8fd
3 changed files with 4 additions and 9 deletions

3
TODO
View File

@ -15,9 +15,6 @@ quotas are weird, they make close() fail.
clarify error cases of transactions.
sync.c does not consider UID 0 valid, which is wrong. fixing this requires
an incompatible change or a remapping hack in sync state files.
clarify UID 0 vs. < 0 returns vor store_msg & find_msg.
create dbg_srec(srec, fmt, ...).

View File

@ -751,7 +751,7 @@ parse_response_code( imap_store_t *ctx, struct imap_cmd *cmd, char *s )
return RESP_CANCEL;
}
} else if (!strcmp( "UIDNEXT", arg )) {
if (!(arg = next_arg( &s )) || (ctx->gen.uidnext = strtol( arg, &p, 10 ), *p)) {
if (!(arg = next_arg( &s )) || !(ctx->gen.uidnext = atoi( arg ))) {
error( "IMAP error: malformed NEXTUID status\n" );
return RESP_CANCEL;
}
@ -969,7 +969,7 @@ get_cmd_result_p2( imap_store_t *ctx, struct imap_cmd *cmd, int response )
if (response != RESP_OK) {
done_imap_cmd( ctx, ocmd, response );
} else {
ctx->gen.uidnext = 0;
ctx->gen.uidnext = 1;
if (ocmd->param.to_trash)
ctx->trashnc = TrashKnown;
ocmd->param.create = 0;
@ -1436,7 +1436,7 @@ imap_select( store_t *gctx, int create,
prefix = ctx->prefix;
}
ctx->gen.uidnext = -1;
ctx->gen.uidnext = 0;
INIT_IMAP_CMD(imap_cmd_simple, cmd, cb, aux)
cmd->gen.param.create = create;
@ -1480,7 +1480,7 @@ imap_load( store_t *gctx, int minuid, int maxuid, int newuid, int *excs, int nex
goto done;
}
if (maxuid == INT_MAX)
maxuid = ctx->gen.uidnext >= 0 ? ctx->gen.uidnext - 1 : 1000000000;
maxuid = ctx->gen.uidnext ? ctx->gen.uidnext - 1 : 1000000000;
if (maxuid >= minuid) {
if ((ctx->gen.opts & OPEN_FIND) && minuid < newuid) {
sprintf( buf, "%d:%d", minuid, newuid - 1 );

View File

@ -466,8 +466,6 @@ lost if they are marked as deleted after the message list was retrieved but
before the mailbox is expunged. This can be fixed by using UID EXPUNGE.
There is no risk as long as the IMAP mailbox is not simultaneously accessed
by \fBmbsync\fR and another mail client.
.P
The IMAP message UID 0 is assumed to be impossible, which is wrong.
..
.SH FILES
.TP