# HG changeset patch # User Timo Sirainen # Date 1061425982 -10800 # Node ID d77a282125b61514509b1a71faab6f7826018487 # Parent ef79ce6507ffa29e0686cb3cf46c1c0b5e03d480 bugfix diff -r ef79ce6507ff -r d77a282125b6 src/lib-storage/index/index-mail.c --- 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;