Mercurial > dovecot > core-2.2
changeset 2533:89911d2a9126 HEAD
Don't break if saving messages to maildir without index files.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 02 Sep 2004 19:53:36 +0300 |
parents | c80b942d5040 |
children | 9c55e054e57d |
files | src/lib-storage/index/maildir/maildir-save.c src/lib-storage/index/maildir/maildir-storage.h src/lib-storage/index/maildir/maildir-sync.c |
diffstat | 3 files changed, 9 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-save.c Thu Sep 02 19:53:06 2004 +0300 +++ b/src/lib-storage/index/maildir/maildir-save.c Thu Sep 02 19:53:36 2004 +0300 @@ -323,6 +323,11 @@ return -1; } + if (maildir_sync_index(ctx->ibox, TRUE) < 0) { + maildir_save_commit_abort(ctx, ctx->files); + return -1; + } + first_uid = maildir_uidlist_get_next_uid(ctx->ibox->uidlist); mail_index_append_assign_uids(ctx->trans, first_uid, &last_uid);
--- a/src/lib-storage/index/maildir/maildir-storage.h Thu Sep 02 19:53:06 2004 +0300 +++ b/src/lib-storage/index/maildir/maildir-storage.h Thu Sep 02 19:53:36 2004 +0300 @@ -42,6 +42,7 @@ struct mailbox_sync_context * maildir_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags); int maildir_storage_sync_force(struct index_mailbox *ibox); +int maildir_sync_index(struct index_mailbox *ibox, int partial); struct mailbox_transaction_context * maildir_transaction_begin(struct mailbox *box, int hide);
--- a/src/lib-storage/index/maildir/maildir-sync.c Thu Sep 02 19:53:06 2004 +0300 +++ b/src/lib-storage/index/maildir/maildir-sync.c Thu Sep 02 19:53:36 2004 +0300 @@ -573,9 +573,8 @@ return 0; } -static int maildir_sync_index(struct maildir_sync_context *ctx) +int maildir_sync_index(struct index_mailbox *ibox, int partial) { - struct index_mailbox *ibox = ctx->ibox; struct maildir_index_sync_context sync_ctx; struct maildir_uidlist_iter_ctx *iter; struct mail_index_transaction *trans; @@ -761,7 +760,7 @@ } maildir_uidlist_iter_deinit(iter); - if (!ctx->partial) { + if (!partial) { /* expunge the rest */ for (seq++; seq <= hdr->messages_count; seq++) mail_index_expunge(trans, seq); @@ -892,7 +891,7 @@ /* finish uidlist syncing, but keep it still locked */ maildir_uidlist_sync_finish(ctx->uidlist_sync_ctx); if (!ctx->ibox->syncing_commit) { - if (maildir_sync_index(ctx) < 0) + if (maildir_sync_index(ctx->ibox, ctx->partial) < 0) return -1; }