dovecot-1.2: maildir: Avoid unnecessary uidlist recreation durin...

dovecot at dovecot.org dovecot at dovecot.org
Wed Sep 8 19:43:51 EEST 2010


details:   http://hg.dovecot.org/dovecot-1.2/rev/d2da54c3d829
changeset: 9613:d2da54c3d829
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Sep 08 17:43:33 2010 +0100
description:
maildir: Avoid unnecessary uidlist recreation during mail delivery.

diffstat:

 src/lib-storage/index/maildir/maildir-uidlist.c |  6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diffs (37 lines):

diff -r c4b2e4f4ff79 -r d2da54c3d829 src/lib-storage/index/maildir/maildir-uidlist.c
--- a/src/lib-storage/index/maildir/maildir-uidlist.c	Tue Sep 07 16:23:03 2010 +0100
+++ b/src/lib-storage/index/maildir/maildir-uidlist.c	Wed Sep 08 17:43:33 2010 +0100
@@ -89,6 +89,7 @@
 	string_t *hdr_extensions;
 
 	unsigned int recreate:1;
+	unsigned int recreate_on_change:1;
 	unsigned int initial_read:1;
 	unsigned int initial_hdr_read:1;
 	unsigned int retry_rewind:1;
@@ -758,7 +759,7 @@
                         ret = -1;
 
 		if (uidlist->unsorted) {
-			uidlist->recreate = TRUE;
+			uidlist->recreate_on_change = TRUE;
 			maildir_uidlist_records_sort_by_uid(uidlist);
 		}
 		if (uidlist->next_uid <= uidlist->prev_read_uid)
@@ -1375,6 +1376,7 @@
 		uidlist->fd_size = st.st_size;
 		uidlist->last_read_offset = st.st_size;
 		uidlist->recreate = FALSE;
+		uidlist->recreate_on_change = FALSE;
 		maildir_uidlist_update_hdr(uidlist, &st);
 	}
 	if (ret < 0)
@@ -1446,7 +1448,7 @@
 	}
 
 
-	if (maildir_uidlist_want_recreate(ctx))
+	if (maildir_uidlist_want_recreate(ctx) || uidlist->recreate_on_change)
 		return maildir_uidlist_recreate(uidlist);
 
 	if (!uidlist->locked_refresh || uidlist->fd == -1) {


More information about the dovecot-cvs mailing list