Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5516:96f0b56489a2 HEAD
Don't feed index_mail_parser headers while searching message bodies, unless
we actually need something from there.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 04 Apr 2007 07:47:14 +0300 |
parents | 295e76b78063 |
children | 2608b9e18bbb |
files | src/lib-storage/index/index-mail-headers.c src/lib-storage/index/index-mail.h src/lib-storage/index/index-search.c |
diffstat | 3 files changed, 11 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/index-mail-headers.c Tue Apr 03 21:43:30 2007 +0300 +++ b/src/lib-storage/index/index-mail-headers.c Wed Apr 04 07:47:14 2007 +0300 @@ -171,6 +171,12 @@ return header_field.idx; } +bool index_mail_want_parse_headers(struct index_mail *mail) +{ + return mail->wanted_headers != NULL || mail->data.save_sent_date || + mail->data.save_bodystructure_header; +} + void index_mail_parse_header_init(struct index_mail *mail, struct mailbox_header_lookup_ctx *_headers) {
--- a/src/lib-storage/index/index-mail.h Tue Apr 03 21:43:30 2007 +0300 +++ b/src/lib-storage/index/index-mail.h Wed Apr 04 07:47:14 2007 +0300 @@ -135,6 +135,7 @@ int index_mail_set_uid(struct mail *mail, uint32_t uid); void index_mail_free(struct mail *mail); +bool index_mail_want_parse_headers(struct index_mail *mail); void index_mail_parse_header_init(struct index_mail *mail, struct mailbox_header_lookup_ctx *headers); void index_mail_parse_header(struct message_part *part,
--- a/src/lib-storage/index/index-search.c Tue Apr 03 21:43:30 2007 +0300 +++ b/src/lib-storage/index/index-search.c Wed Apr 04 07:47:14 2007 +0300 @@ -597,9 +597,11 @@ hdr_ctx.index_context = ctx; hdr_ctx.custom_header = TRUE; hdr_ctx.args = args; - hdr_ctx.parse_headers = headers == NULL; + hdr_ctx.parse_headers = headers == NULL && + index_mail_want_parse_headers(ctx->imail); - index_mail_parse_header_init(ctx->imail, headers_ctx); + if (hdr_ctx.parse_headers) + index_mail_parse_header_init(ctx->imail, headers_ctx); message_parse_header(input, NULL, search_header, &hdr_ctx); if (headers_ctx != NULL) mailbox_header_lookup_deinit(&headers_ctx);