if (data->save_bodystructure_header) {
i_assert(!data->save_bodystructure_body ||
data->parser_ctx != NULL);
- data->save_bodystructure_header = FALSE;
+ data->parsed_bodystructure_header = TRUE;
}
return;
}
index_mail_set_message_parts_corrupted(&mail->mail.mail, error);
data->parts = NULL;
}
+ if (data->parts == NULL) {
+ /* The previous parsing didn't finish, so we're
+ re-parsing the header. The new parts don't have data
+ filled anymore. */
+ data->parsed_bodystructure_header = FALSE;
+ }
}
if (data->parts == NULL) {
if (data->save_bodystructure_body) {
/* bodystructure header is parsed, we want the body's mime
headers too */
- i_assert(!data->save_bodystructure_header);
+ i_assert(data->parsed_bodystructure_header);
message_parser_parse_body(data->parser_ctx,
parse_bodystructure_part_header,
mail->mail.data_pool);
a string */
index_mail_body_parsed_cache_bodystructure(mail, field);
} else {
- if (data->save_bodystructure_header ||
+ if ((data->save_bodystructure_header &&
+ !data->parsed_bodystructure_header) ||
!data->save_bodystructure_body ||
field == MAIL_CACHE_BODY_SNIPPET) {
/* we haven't parsed the header yet */
unsigned int save_body_snippet:1;
unsigned int stream_has_only_header:1;
unsigned int parsed_bodystructure:1;
+ unsigned int parsed_bodystructure_header:1;
unsigned int hdr_size_set:1;
unsigned int body_size_set:1;
unsigned int messageparts_saved_to_cache:1;