]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
maildir: Write dovecot-uidlist before syncing index to make sure that any
authorTimo Sirainen <tss@iki.fi>
Fri, 6 Jun 2008 14:15:14 +0000 (17:15 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 6 Jun 2008 14:15:14 +0000 (17:15 +0300)
new messages' filenames are available immediately when they're seen in index.

--HG--
branch : HEAD

src/lib-storage/index/maildir/maildir-uidlist.c

index 8ae4024443d0f4cae9db6cd782ddb0f4bebf8f81..6071ea07995fe5d145e3b923b3e384a9fa468625 100644 (file)
@@ -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);