# HG changeset patch # User Timo Sirainen # Date 1453710377 -7200 # Node ID 97f82dbd71e713d875ef3fff60cf4d497536f457 # Parent 82cf8a00c3699075f2fa41e1cab062915890b123 imapc: Prefetching shouldn't send FETCH requests for headers that are already cached. diff -r 82cf8a00c369 -r 97f82dbd71e7 src/lib-storage/index/imapc/imapc-mail-fetch.c --- a/src/lib-storage/index/imapc/imapc-mail-fetch.c Sun Jan 24 22:12:30 2016 +0200 +++ b/src/lib-storage/index/imapc/imapc-mail-fetch.c Mon Jan 25 10:26:17 2016 +0200 @@ -331,7 +331,9 @@ 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) diff -r 82cf8a00c369 -r 97f82dbd71e7 src/lib-storage/index/imapc/imapc-mail.c --- a/src/lib-storage/index/imapc/imapc-mail.c Sun Jan 24 22:12:30 2016 +0200 +++ b/src/lib-storage/index/imapc/imapc-mail.c Mon Jan 25 10:26:17 2016 +0200 @@ -299,9 +299,8 @@ 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; diff -r 82cf8a00c369 -r 97f82dbd71e7 src/lib-storage/index/imapc/imapc-mail.h --- a/src/lib-storage/index/imapc/imapc-mail.h Sun Jan 24 22:12:30 2016 +0200 +++ b/src/lib-storage/index/imapc/imapc-mail.h Mon Jan 25 10:26:17 2016 +0200 @@ -34,6 +34,8 @@ 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,