Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6676:6a54a5339a64 HEAD
Use MAIL_INDEX_VIEW_SYNC_FLAG_FIX_INCONSISTENT instead of handling
inconsistency ourself.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 03 Nov 2007 21:39:33 +0200 |
parents | a4f475d415d6 |
children | 90bcf480312d |
files | src/lib-storage/index/index-sync.c |
diffstat | 1 files changed, 12 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/index-sync.c Sat Nov 03 21:39:10 2007 +0200 +++ b/src/lib-storage/index/index-sync.c Sat Nov 03 21:39:33 2007 +0200 @@ -100,7 +100,6 @@ struct index_mailbox *ibox = (struct index_mailbox *)box; struct index_mailbox_sync_context *ctx; enum mail_index_view_sync_flags sync_flags = 0; - int i; ctx = i_new(struct index_mailbox_sync_context, 1); ctx->ctx.box = box; @@ -111,36 +110,22 @@ return &ctx->ctx; } - if ((flags & MAILBOX_SYNC_FLAG_FIX_INCONSISTENT) != 0 && - mail_index_view_is_inconsistent(ibox->view)) { - mail_index_view_close(&ibox->view); - ibox->view = mail_index_view_open(ibox->index); - } + if ((flags & MAILBOX_SYNC_FLAG_NO_EXPUNGES) != 0) + sync_flags |= MAIL_INDEX_VIEW_SYNC_FLAG_NOEXPUNGES; - if ((flags & MAILBOX_SYNC_FLAG_NO_EXPUNGES) != 0) - sync_flags = MAIL_INDEX_VIEW_SYNC_FLAG_NOEXPUNGES; - - for (i = 0;; i++) { + if ((flags & MAILBOX_SYNC_FLAG_FIX_INCONSISTENT) != 0) { + sync_flags |= MAIL_INDEX_VIEW_SYNC_FLAG_FIX_INCONSISTENT; + ctx->messages_count = 0; + } else { ctx->messages_count = mail_index_view_get_messages_count(ibox->view); - - if (mail_index_view_sync_begin(ibox->view, sync_flags, - &ctx->sync_ctx) < 0) { - mail_storage_set_index_error(ibox); - ctx->failed = TRUE; - return &ctx->ctx; - } + } - if (i == 0 && - (flags & MAILBOX_SYNC_FLAG_FIX_INCONSISTENT) != 0 && - mail_index_view_is_inconsistent(ibox->view)) { - /* index was just reset */ - (void)mail_index_view_sync_commit(&ctx->sync_ctx); - mail_index_view_close(&ibox->view); - ibox->view = mail_index_view_open(ibox->index); - } else { - break; - } + if (mail_index_view_sync_begin(ibox->view, sync_flags, + &ctx->sync_ctx) < 0) { + mail_storage_set_index_error(ibox); + ctx->failed = TRUE; + return &ctx->ctx; } if ((flags & MAILBOX_SYNC_FLAG_NO_EXPUNGES) == 0) {