]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Don't add first_saved to mailbox list index unless autoexpunge is set.
authorTimo Sirainen <tss@iki.fi>
Fri, 27 Nov 2015 12:11:57 +0000 (14:11 +0200)
committerTimo Sirainen <tss@iki.fi>
Fri, 27 Nov 2015 12:11:57 +0000 (14:11 +0200)
src/lib-storage/list/mailbox-list-index-status.c
src/lib-storage/mail-storage-private.h

index ddd2e1107510857da30d1552e6c3abb9d1e9b80d..d171b71400133da176bbd42b47962a1bbb01d531 100644 (file)
@@ -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;
index 983666e62da42adf9c9402050be44e0f5fa48864..46cae5e25acd13fe8620305c6defdc0b20079769 100644 (file)
@@ -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 {