changeset 9613:d2da54c3d829 HEAD

maildir: Avoid unnecessary uidlist recreation during mail delivery.
author Timo Sirainen <tss@iki.fi>
date Wed, 08 Sep 2010 17:43:33 +0100
parents c4b2e4f4ff79
children e67b892c9ff3
files src/lib-storage/index/maildir/maildir-uidlist.c
diffstat 1 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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) {