From: Timo Sirainen Date: Sat, 16 Nov 2013 18:06:34 +0000 (+0200) Subject: imapc: Don't send FETCHes for data that is already in cache. X-Git-Tag: 2.2.8~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ffb886eb9c3682bb891206cced9623368035d739;p=thirdparty%2Fdovecot%2Fcore.git imapc: Don't send FETCHes for data that is already in cache. --- diff --git a/src/lib-storage/index/imapc/imapc-mail-fetch.c b/src/lib-storage/index/imapc/imapc-mail-fetch.c index b5f0422672..13fd24b43b 100644 --- a/src/lib-storage/index/imapc/imapc-mail-fetch.c +++ b/src/lib-storage/index/imapc/imapc-mail-fetch.c @@ -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; diff --git a/src/lib-storage/index/imapc/imapc-mail.c b/src/lib-storage/index/imapc/imapc-mail.c index 4b32d7ccf5..643c22ef79 100644 --- a/src/lib-storage/index/imapc/imapc-mail.c +++ b/src/lib-storage/index/imapc/imapc-mail.c @@ -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) diff --git a/src/lib-storage/index/imapc/imapc-mail.h b/src/lib-storage/index/imapc/imapc-mail.h index ba94f89dd2..f3c61fa12c 100644 --- a/src/lib-storage/index/imapc/imapc-mail.h +++ b/src/lib-storage/index/imapc/imapc-mail.h @@ -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