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);