dovecot: Use MAIL_INDEX_VIEW_SYNC_FLAG_FIX_INCONSISTENT instead ...

dovecot at dovecot.org dovecot at dovecot.org
Sat Nov 3 21:39:37 EET 2007


details:   http://hg.dovecot.org/dovecot/rev/6a54a5339a64
changeset: 6676:6a54a5339a64
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Nov 03 21:39:33 2007 +0200
description:
Use MAIL_INDEX_VIEW_SYNC_FLAG_FIX_INCONSISTENT instead of handling
inconsistency ourself.

diffstat:

1 file changed, 13 insertions(+), 28 deletions(-)
src/lib-storage/index/index-sync.c |   41 +++++++++++-------------------------

diffs (61 lines):

diff -r a4f475d415d6 -r 6a54a5339a64 src/lib-storage/index/index-sync.c
--- 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 @@ index_mailbox_sync_init(struct mailbox *
 	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 @@ index_mailbox_sync_init(struct mailbox *
 		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;
-
-	for (i = 0;; i++) {
+		sync_flags |= MAIL_INDEX_VIEW_SYNC_FLAG_NOEXPUNGES;
+
+	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) {


More information about the dovecot-cvs mailing list