changeset 4975:1bc48cee6420 HEAD

Call mail_index_view_unlock() only when all transactions are finished.
author Timo Sirainen <tss@iki.fi>
date Thu, 28 Dec 2006 22:15:08 +0200
parents 4654603f24f6
children 4d947423c82f
files src/lib-storage/index/index-status.c src/lib-storage/index/index-sync.c src/lib-storage/index/index-transaction.c
diffstat 3 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/index-status.c	Thu Dec 28 21:59:37 2006 +0200
+++ b/src/lib-storage/index/index-status.c	Thu Dec 28 22:15:08 2006 +0200
@@ -44,6 +44,7 @@
 		index_storage_mailbox_open(ibox);
 
 	ret = index_storage_get_status_locked(ibox, items, status);
-	mail_index_view_unlock(ibox->view);
+	if (box->transaction_count == 0)
+		mail_index_view_unlock(ibox->view);
 	return ret;
 }
--- a/src/lib-storage/index/index-sync.c	Thu Dec 28 21:59:37 2006 +0200
+++ b/src/lib-storage/index/index-sync.c	Thu Dec 28 22:15:08 2006 +0200
@@ -321,7 +321,8 @@
 							status_r);
 	}
 
-	mail_index_view_unlock(ctx->ibox->view);
+	if (ibox->box.transaction_count == 0)
+		mail_index_view_unlock(ibox->view);
 	i_free(ctx);
 	return ret;
 }
--- a/src/lib-storage/index/index-transaction.c	Thu Dec 28 21:59:37 2006 +0200
+++ b/src/lib-storage/index/index-transaction.c	Thu Dec 28 22:15:08 2006 +0200
@@ -23,7 +23,8 @@
 {
 	mail_cache_view_close(t->cache_view);
 	mail_index_view_close(&t->trans_view);
-	mail_index_view_unlock(t->ibox->view);
+	if (t->ibox->box.transaction_count == 0)
+		mail_index_view_unlock(t->ibox->view);
 	array_free(&t->mailbox_ctx.module_contexts);
 	i_free(t);
 }