Mercurial > dovecot > original-hg > dovecot-1.2
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) {