imapc_mail_update_access_parts(&mail->imail);
fields = imapc_mail_get_wanted_fetch_fields(mail);
- if (fields != 0 || data->wanted_headers != NULL) T_BEGIN {
+ if (fields != 0 ||
+ (data->wanted_headers != NULL &&
+ !imapc_mail_has_headers_in_cache(&mail->imail, data->wanted_headers))) T_BEGIN {
if (imapc_mail_send_fetch(_mail, fields,
data->wanted_headers == NULL ? NULL :
data->wanted_headers->name) > 0)
stream_r);
}
-static bool
-imapc_mail_has_headers_in_cache(struct index_mail *mail,
- struct mailbox_header_lookup_ctx *headers)
+bool imapc_mail_has_headers_in_cache(struct index_mail *mail,
+ struct mailbox_header_lookup_ctx *headers)
{
struct mail *_mail = &mail->mail.mail;
unsigned int i;
bool imapc_mail_prefetch(struct mail *mail);
void imapc_mail_fetch_flush(struct imapc_mailbox *mbox);
void imapc_mail_init_stream(struct imapc_mail *mail);
+bool imapc_mail_has_headers_in_cache(struct index_mail *mail,
+ struct mailbox_header_lookup_ctx *headers);
void imapc_mail_fetch_update(struct imapc_mail *mail,
const struct imapc_untagged_reply *reply,