dovecot: Free mail structure before transaction is committed, so...

dovecot at dovecot.org dovecot at dovecot.org
Fri Nov 23 12:10:21 EET 2007


details:   http://hg.dovecot.org/dovecot/rev/9ca7f055b646
changeset: 6843:9ca7f055b646
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Nov 23 12:10:17 2007 +0200
description:
Free mail structure before transaction is committed, so that it can update
cache file within the transaction.

diffstat:

3 files changed, 7 insertions(+), 3 deletions(-)
src/lib-storage/index/cydir/cydir-save.c     |    2 ++
src/lib-storage/index/dbox/dbox-save.c       |    3 +++
src/lib-storage/index/maildir/maildir-save.c |    5 ++---

diffs (47 lines):

diff -r d2c8269a0679 -r 9ca7f055b646 src/lib-storage/index/cydir/cydir-save.c
--- a/src/lib-storage/index/cydir/cydir-save.c	Thu Nov 22 09:36:57 2007 +0200
+++ b/src/lib-storage/index/cydir/cydir-save.c	Fri Nov 23 12:10:17 2007 +0200
@@ -282,6 +282,8 @@ int cydir_transaction_save_commit_pre(st
 		}
 	}
 
+	if (ctx->mail != NULL)
+		mail_free(&ctx->mail);
 	return 0;
 }
 
diff -r d2c8269a0679 -r 9ca7f055b646 src/lib-storage/index/dbox/dbox-save.c
--- a/src/lib-storage/index/dbox/dbox-save.c	Thu Nov 22 09:36:57 2007 +0200
+++ b/src/lib-storage/index/dbox/dbox-save.c	Fri Nov 23 12:10:17 2007 +0200
@@ -426,6 +426,9 @@ int dbox_transaction_save_commit_pre(str
 	*t->ictx.last_saved_uid = next_uid - 1;
 
 	dbox_index_append_commit(&ctx->append_ctx);
+
+	if (ctx->mail != NULL)
+		mail_free(&ctx->mail);
 	return 0;
 }
 
diff -r d2c8269a0679 -r 9ca7f055b646 src/lib-storage/index/maildir/maildir-save.c
--- a/src/lib-storage/index/maildir/maildir-save.c	Thu Nov 22 09:36:57 2007 +0200
+++ b/src/lib-storage/index/maildir/maildir-save.c	Fri Nov 23 12:10:17 2007 +0200
@@ -706,6 +706,8 @@ int maildir_transaction_save_commit_pre(
 		maildir_transaction_save_rollback(ctx);
 	}
 
+	if (ctx->mail != NULL)
+		mail_free(&ctx->mail);
 	return ret;
 }
 
@@ -715,9 +717,6 @@ void maildir_transaction_save_commit_pos
 
 	if (ctx->locked)
 		maildir_uidlist_unlock(ctx->mbox->uidlist);
-
-	if (ctx->mail != NULL)
-		mail_free(&ctx->mail);
 	pool_unref(&ctx->pool);
 }
 


More information about the dovecot-cvs mailing list