Mercurial > dovecot > core-2.2
changeset 19631:97f82dbd71e7
imapc: Prefetching shouldn't send FETCH requests for headers that are already cached.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Mon, 25 Jan 2016 10:26:17 +0200 |
parents | 82cf8a00c369 |
children | 727307a98574 |
files | 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 |
diffstat | 3 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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;
--- 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,