]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
mbox: Fixed setting initial explicit uidvalidity/uidnext on mailbox creation.
authorTimo Sirainen <tss@iki.fi>
Fri, 30 Oct 2009 18:40:01 +0000 (14:40 -0400)
committerTimo Sirainen <tss@iki.fi>
Fri, 30 Oct 2009 18:40:01 +0000 (14:40 -0400)
--HG--
branch : HEAD

src/lib-storage/index/mbox/mbox-sync.c

index 07439e8020440137784f7468d7d7725da5545f4b..d901dfd77f37b7c6e00ae3989934ded78851ba90 100644 (file)
@@ -1200,6 +1200,16 @@ static int mbox_write_pseudo(struct mbox_sync_context *sync_ctx)
 
        i_assert(sync_ctx->write_fd != -1);
 
+       if (sync_ctx->mbox->sync_hdr_update != NULL) {
+               const struct mailbox_update *update =
+                       sync_ctx->mbox->sync_hdr_update;
+
+               if (update->uid_validity != 0)
+                       sync_ctx->base_uid_validity = update->uid_validity;
+               if (update->min_next_uid != 0)
+                       sync_ctx->base_uid_last = update->min_next_uid-1;
+       }
+
        uid_validity = sync_ctx->base_uid_validity != 0 ?
                sync_ctx->base_uid_validity : sync_ctx->hdr->uid_validity;
        i_assert(uid_validity != 0);
@@ -1351,6 +1361,11 @@ static int mbox_sync_handle_eof_updates(struct mbox_sync_context *sync_ctx,
 
                 sync_ctx->expunged_space = 0;
                mbox_sync_file_updated(sync_ctx, FALSE);
+       } else {
+               if (file_size == 0 && sync_ctx->mbox->sync_hdr_update != NULL) {
+                       if (mbox_write_pseudo(sync_ctx) < 0)
+                               return -1;
+               }
        }
        return 0;
 }