# HG changeset patch # User Timo Sirainen # Date 1175662034 -10800 # Node ID 96f0b56489a25633298093d6585d5bf2206576f2 # Parent 295e76b780632fa792f5491b64f05ff04dbe303e Don't feed index_mail_parser headers while searching message bodies, unless we actually need something from there. diff -r 295e76b78063 -r 96f0b56489a2 src/lib-storage/index/index-mail-headers.c --- 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) { diff -r 295e76b78063 -r 96f0b56489a2 src/lib-storage/index/index-mail.h --- 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, diff -r 295e76b78063 -r 96f0b56489a2 src/lib-storage/index/index-search.c --- 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);