]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Don't send FETCHes for data that is already in cache.
authorTimo Sirainen <tss@iki.fi>
Sat, 16 Nov 2013 18:06:34 +0000 (20:06 +0200)
committerTimo Sirainen <tss@iki.fi>
Sat, 16 Nov 2013 18:06:34 +0000 (20:06 +0200)
src/lib-storage/index/imapc/imapc-mail-fetch.c
src/lib-storage/index/imapc/imapc-mail.c
src/lib-storage/index/imapc/imapc-mail.h

index b5f042267224954fd0e2a0911e4796c2b0172b0a..13fd24b43bcc1814ea81e880e28a9f6bca6c16d9 100644 (file)
@@ -217,6 +217,9 @@ bool imapc_mail_prefetch(struct mail *_mail)
        if (mbox->prev_mail_cache.uid == _mail->uid)
                imapc_mail_cache_get(mail, &mbox->prev_mail_cache);
 
+       /* try to get as much from cache as possible */
+       imapc_mail_update_access_parts(&mail->imail);
+
        if ((data->wanted_fields & MAIL_FETCH_RECEIVED_DATE) != 0 &&
            data->received_date == (time_t)-1)
                fields |= MAIL_FETCH_RECEIVED_DATE;
index 4b32d7ccf5481e9ebd29579daea9761bf0ed0b2f..643c22ef79348ff3bca1fcea3c5d14e432fae2e3 100644 (file)
@@ -285,7 +285,7 @@ imapc_mail_has_headers_in_cache(struct index_mail *mail,
        return TRUE;
 }
 
-static void index_mail_update_access_parts(struct index_mail *mail)
+void imapc_mail_update_access_parts(struct index_mail *mail)
 {
        struct mail *_mail = &mail->mail.mail;
        struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box;
@@ -340,7 +340,7 @@ imapc_mail_add_temp_wanted_fields(struct mail *_mail,
        struct index_mail *mail = (struct index_mail *)_mail;
 
        index_mail_add_temp_wanted_fields(_mail, fields, headers);
-       index_mail_update_access_parts(mail);
+       imapc_mail_update_access_parts(mail);
 }
 
 static void imapc_mail_close(struct mail *_mail)
index ba94f89dd2fc7d391f1e2814b7a48291e860c98d..f3c61fa12ca7f9998a7b7bca12b7de4661bd6720 100644 (file)
@@ -33,5 +33,6 @@ void imapc_mail_init_stream(struct imapc_mail *mail, bool have_body);
 void imapc_mail_fetch_update(struct imapc_mail *mail,
                             const struct imapc_untagged_reply *reply,
                             const struct imap_arg *args);
+void imapc_mail_update_access_parts(struct index_mail *mail);
 
 #endif