commit 576780f072e0f8c953b5e9936a271a383205f846 Author: Oswald Buddenhagen <o...@kde.org> Date: Tue May 3 09:42:27 2011 +0200
make maildir uidvalidity change fatal it's best to give the user a chance to fix it rather than completely messing up the syncstate by re-enumerating the UIDs. src/drv_maildir.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/src/drv_maildir.c b/src/drv_maildir.c index c8226bc..9d4a00e 100644 --- a/src/drv_maildir.c +++ b/src/drv_maildir.c @@ -399,6 +399,15 @@ maildir_uidval_lock( maildir_store_t *ctx ) lseek( ctx->uvfd, 0, SEEK_SET ); if ((n = read( ctx->uvfd, buf, sizeof(buf) )) <= 0 || (buf[n] = 0, sscanf( buf, "%d\n%d", &ctx->gen.uidvalidity, &ctx->nuid ) != 2)) { +#if 1 + /* In a generic driver, resetting the UID validity would be the right thing. + * But this would mess up the sync state completely. So better bail out and + * give the user a chance to fix the mailbox. */ + if (n) { + error( "Maildir error: cannot read UIDVALIDITY.\n" ); + return DRV_BOX_BAD; + } +#endif return maildir_init_uid_new( ctx ); } else ctx->uvok = 1; @@ -624,6 +633,12 @@ maildir_scan( maildir_store_t *ctx, msglist_t *msglist ) entry = &msglist->ents[i]; if (entry->uid != INT_MAX) { if (uid == entry->uid) { +#if 1 + /* See comment in maildir_uidval_lock() why this is fatal. */ + error( "Maildir error: duplicate UID %d.\n", uid ); + maildir_free_scan( msglist ); + return DRV_BOX_BAD; +#else info( "Maildir notice: duplicate UID; changing UIDVALIDITY.\n"); if ((ret = maildir_init_uid( ctx )) != DRV_OK) { maildir_free_scan( msglist ); @@ -631,6 +646,7 @@ maildir_scan( maildir_store_t *ctx, msglist_t *msglist ) } maildir_free_scan( msglist ); goto again; +#endif } uid = entry->uid; if ((ctx->gen.opts & OPEN_SIZE) || ((ctx->gen.opts & OPEN_FIND) && uid >= ctx->newuid)) ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ isync-devel mailing list isync-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/isync-devel