Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6900:950ce0b5edb5 HEAD
Message parser wasn't returning body blocks correctly, causing problems with
message body searches.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 03 Dec 2007 09:49:31 +0200 |
parents | 69babcc2fb80 |
children | 92e197fa699e |
files | src/lib-mail/message-parser.c |
diffstat | 1 files changed, 12 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-mail/message-parser.c Sun Dec 02 23:52:50 2007 +0200 +++ b/src/lib-mail/message-parser.c Mon Dec 03 09:49:31 2007 +0200 @@ -221,6 +221,15 @@ return 1; } +static int parse_next_mime_header_init(struct message_parser_ctx *ctx, + struct message_block *block_r) +{ + ctx->part = message_part_append(ctx->part_pool, ctx->part); + ctx->part->flags |= MESSAGE_PART_FLAG_IS_MIME; + + return parse_next_header_init(ctx, block_r); +} + static int parse_next_body_skip_boundary_line(struct message_parser_ctx *ctx, struct message_block *block_r) { @@ -245,11 +254,8 @@ parse_body_add_block(ctx, block_r); /* a new MIME part begins */ - ctx->part = message_part_append(ctx->part_pool, ctx->part); - ctx->part->flags |= MESSAGE_PART_FLAG_IS_MIME; - - ctx->parse_next_block = parse_next_header_init; - return parse_next_header_init(ctx, block_r); + ctx->parse_next_block = parse_next_mime_header_init; + return 1; } static int parse_part_finish(struct message_parser_ctx *ctx, @@ -379,7 +385,7 @@ } if (block_r->size != 0) parse_body_add_block(ctx, block_r); - return ret <= 0 ? ret : + return ret <= 0 || block_r->size != 0 ? ret : parse_part_finish(ctx, boundary, block_r, FALSE); }