From: Timo Sirainen Date: Sat, 16 Nov 2013 22:41:23 +0000 (+0200) Subject: imapc: Fixes to imapc_feature fetch-headers X-Git-Tag: 2.2.8~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d81b80bac97040d5e737f23ce1ee2eb4d7cc16cf;p=thirdparty%2Fdovecot%2Fcore.git imapc: Fixes to imapc_feature fetch-headers --- diff --git a/src/lib-storage/index/imapc/imapc-mail-fetch.c b/src/lib-storage/index/imapc/imapc-mail-fetch.c index 2599ffb0f4..91a9aa0284 100644 --- a/src/lib-storage/index/imapc/imapc-mail-fetch.c +++ b/src/lib-storage/index/imapc/imapc-mail-fetch.c @@ -156,7 +156,7 @@ imapc_mail_send_fetch(struct mail *_mail, enum mail_fetch_field fields, str_append(str, "BODY.PEEK[HEADER] "); else if (headers != NULL) { mail->fetching_headers = - headers_merge(mail->imail.mail.pool, headers, + headers_merge(mail->imail.mail.data_pool, headers, mail->fetching_headers); str_append(str, "BODY.PEEK[HEADER.FIELDS ("); for (i = 0; mail->fetching_headers[i] != NULL; i++) { diff --git a/src/lib-storage/index/imapc/imapc-mail.c b/src/lib-storage/index/imapc/imapc-mail.c index d29773932f..2984240c05 100644 --- a/src/lib-storage/index/imapc/imapc-mail.c +++ b/src/lib-storage/index/imapc/imapc-mail.c @@ -308,13 +308,15 @@ void imapc_mail_update_access_parts(struct index_mail *mail) data->access_part |= READ_HDR | READ_BODY; } - if (data->access_part == 0 && data->wanted_headers != NULL) { + if (data->access_part == 0 && data->wanted_headers != NULL && + !IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_FETCH_HEADERS)) { /* see if all wanted headers exist in cache */ if (!imapc_mail_has_headers_in_cache(mail, data->wanted_headers)) data->access_part |= PARSE_HDR; } if (data->access_part == 0 && - (data->wanted_fields & MAIL_FETCH_IMAP_ENVELOPE) != 0) { + (data->wanted_fields & MAIL_FETCH_IMAP_ENVELOPE) != 0 && + !IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_FETCH_HEADERS)) { /* the common code already checked this partially, but we need a guaranteed correct answer */ header_ctx = mailbox_header_lookup_init(_mail->box, @@ -360,6 +362,7 @@ static void imapc_mail_close(struct mail *_mail) index_mail_close(_mail); + mail->fetching_headers = NULL; if (mail->body_fetched) { imapc_mail_cache_free(cache); cache->uid = _mail->uid;