changeset 1698:d77a282125b6 HEAD

bugfix
author Timo Sirainen <tss@iki.fi>
date Thu, 21 Aug 2003 03:33:02 +0300
parents ef79ce6507ff
children e3cbf6d70899
files src/lib-storage/index/index-mail.c
diffstat 1 files changed, 16 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/index-mail.c	Thu Aug 21 03:04:11 2003 +0300
+++ b/src/lib-storage/index/index-mail.c	Thu Aug 21 03:33:02 2003 +0300
@@ -413,6 +413,15 @@
 	return data->size;
 }
 
+static void parse_bodystructure_header(struct message_part *part,
+				       struct message_header_line *hdr,
+				       void *context)
+{
+	pool_t pool = context;
+
+	imap_bodystructure_parse_header(pool, part, hdr);
+}
+
 static int index_mail_parse_body(struct index_mail *mail)
 {
 	struct index_mail_data *data = &mail->data;
@@ -423,7 +432,13 @@
 
 	i_stream_seek(data->stream, data->hdr_size.physical_size);
 
-	message_parser_parse_body(data->parser_ctx, NULL, NULL, NULL);
+	if (data->bodystructure_header_parsed) {
+		message_parser_parse_body(data->parser_ctx,
+					  parse_bodystructure_header,
+					  NULL, mail->pool);
+	} else {
+		message_parser_parse_body(data->parser_ctx, NULL, NULL, NULL);
+	}
 	data->parts = message_parser_deinit(data->parser_ctx);
         data->parser_ctx = NULL;
 
@@ -512,15 +527,6 @@
 	return data->stream;
 }
 
-static void parse_bodystructure_header(struct message_part *part,
-				       struct message_header_line *hdr,
-				       void *context)
-{
-	pool_t pool = context;
-
-	imap_bodystructure_parse_header(pool, part, hdr);
-}
-
 static const char *get_special(struct mail *_mail, enum mail_fetch_field field)
 {
 	struct index_mail *mail = (struct index_mail *) _mail;