]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Avoid FETCH INTERNALDATE for getting save_date when we already know received_date.
authorTimo Sirainen <tss@iki.fi>
Sat, 16 Nov 2013 18:09:19 +0000 (20:09 +0200)
committerTimo Sirainen <tss@iki.fi>
Sat, 16 Nov 2013 18:09:19 +0000 (20:09 +0200)
src/lib-storage/index/imapc/imapc-mail-fetch.c
src/lib-storage/index/imapc/imapc-mail.c

index 13fd24b43bcc1814ea81e880e28a9f6bca6c16d9..967d1bff9fdbc554c4b3730a9c052654ad95d9d4 100644 (file)
@@ -223,6 +223,9 @@ bool imapc_mail_prefetch(struct mail *_mail)
        if ((data->wanted_fields & MAIL_FETCH_RECEIVED_DATE) != 0 &&
            data->received_date == (time_t)-1)
                fields |= MAIL_FETCH_RECEIVED_DATE;
+       if ((data->wanted_fields & MAIL_FETCH_SAVE_DATE) != 0 &&
+           data->save_date == (time_t)-1 && data->received_date == (time_t)-1)
+               fields |= MAIL_FETCH_RECEIVED_DATE;
        if ((data->wanted_fields & MAIL_FETCH_PHYSICAL_SIZE) != 0 &&
            data->physical_size == (uoff_t)-1 &&
            IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_RFC822_SIZE))
index 643c22ef79348ff3bca1fcea3c5d14e432fae2e3..d29773932f388812f60753470198baafcd1fcab0 100644 (file)
@@ -296,6 +296,12 @@ void imapc_mail_update_access_parts(struct index_mail *mail)
 
        if ((data->wanted_fields & MAIL_FETCH_RECEIVED_DATE) != 0)
                (void)index_mail_get_received_date(_mail, &date);
+       if ((data->wanted_fields & MAIL_FETCH_SAVE_DATE) != 0) {
+               if (index_mail_get_save_date(_mail, &date) < 0) {
+                       (void)index_mail_get_received_date(_mail, &date);
+                       data->save_date = data->received_date;
+               }
+       }
        if ((data->wanted_fields & MAIL_FETCH_PHYSICAL_SIZE) != 0) {
                if (index_mail_get_physical_size(_mail, &size) < 0 &&
                    !IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_RFC822_SIZE))