From: Timo Sirainen Date: Fri, 6 Jun 2008 14:15:14 +0000 (+0300) Subject: maildir: Write dovecot-uidlist before syncing index to make sure that any X-Git-Tag: 1.2.alpha1~363^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=82037d2bd997fef300025391353da4e085de9b4c;p=thirdparty%2Fdovecot%2Fcore.git maildir: Write dovecot-uidlist before syncing index to make sure that any new messages' filenames are available immediately when they're seen in index. --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/maildir/maildir-uidlist.c b/src/lib-storage/index/maildir/maildir-uidlist.c index 8ae4024443..6071ea0799 100644 --- a/src/lib-storage/index/maildir/maildir-uidlist.c +++ b/src/lib-storage/index/maildir/maildir-uidlist.c @@ -1550,6 +1550,13 @@ void maildir_uidlist_sync_finish(struct maildir_uidlist_sync_ctx *ctx) ctx->finished = TRUE; ctx->uidlist->initial_sync = TRUE; + + i_assert(ctx->locked || !ctx->changed); + if ((ctx->changed || ctx->uidlist->recreate) && + !ctx->failed && ctx->locked) T_BEGIN { + if (maildir_uidlist_sync_update(ctx) < 0) + ctx->failed = TRUE; + } T_END; } int maildir_uidlist_sync_deinit(struct maildir_uidlist_sync_ctx **_ctx) @@ -1561,18 +1568,8 @@ int maildir_uidlist_sync_deinit(struct maildir_uidlist_sync_ctx **_ctx) if (!ctx->finished) maildir_uidlist_sync_finish(ctx); - if (ctx->partial) maildir_uidlist_mark_all(ctx->uidlist, FALSE); - - i_assert(ctx->locked || !ctx->changed); - if ((ctx->changed || ctx->uidlist->recreate) && - !ctx->failed && ctx->locked) { - T_BEGIN { - ret = maildir_uidlist_sync_update(ctx); - } T_END; - } - if (ctx->locked) maildir_uidlist_unlock(ctx->uidlist);