From: Timo Sirainen Date: Fri, 27 Nov 2015 12:11:57 +0000 (+0200) Subject: lib-storage: Don't add first_saved to mailbox list index unless autoexpunge is set. X-Git-Tag: 2.2.20.rc1~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4e3bcf7fdaeef92dd07a2acb1ded58422a907e87;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Don't add first_saved to mailbox list index unless autoexpunge is set. --- diff --git a/src/lib-storage/list/mailbox-list-index-status.c b/src/lib-storage/list/mailbox-list-index-status.c index ddd2e11075..d171b71400 100644 --- a/src/lib-storage/list/mailbox-list-index-status.c +++ b/src/lib-storage/list/mailbox-list-index-status.c @@ -336,6 +336,10 @@ index_list_try_get_metadata(struct mailbox *box, if ((items & MAILBOX_METADATA_FIRST_SAVE_DATE) != 0) { struct mailbox_index_first_saved first_saved; + /* start writing first_saved to mailbox list index if it wasn't + there already. */ + box->update_first_saved = TRUE; + if ((ret = index_list_get_cached_first_saved(box, &first_saved)) <= 0) return ret; metadata_r->first_save_date = @@ -441,8 +445,9 @@ index_list_first_saved_update_changes(struct mailbox *box, if (mail_index_view_get_messages_count(box->view) > 0) mail_index_lookup_uid(box->view, 1, &changes->first_uid); if (first_saved.uid == 0 && first_saved.timestamp == 0) { - /* first time setting this */ - changes->first_saved_changed = TRUE; + /* it's not in the index yet. we'll set it only if we've + just called MAILBOX_METADATA_FIRST_SAVE_DATE. */ + changes->first_saved_changed = box->update_first_saved; } else { changes->first_saved_changed = changes->first_uid != first_saved.uid; diff --git a/src/lib-storage/mail-storage-private.h b/src/lib-storage/mail-storage-private.h index 983666e62d..46cae5e25a 100644 --- a/src/lib-storage/mail-storage-private.h +++ b/src/lib-storage/mail-storage-private.h @@ -378,6 +378,8 @@ struct mailbox { unsigned int synced:1; /* Updating cache file is disabled */ unsigned int mail_cache_disabled:1; + /* Update first_saved field to mailbox list index. */ + unsigned int update_first_saved:1; }; struct mail_vfuncs {