dovecot: Message parser wasn't returning body blocks correctly, ...
dovecot at dovecot.org
dovecot at dovecot.org
Mon Dec 3 09:51:08 EET 2007
details: http://hg.dovecot.org/dovecot/rev/950ce0b5edb5
changeset: 6900:950ce0b5edb5
user: Timo Sirainen <tss at iki.fi>
date: Mon Dec 03 09:49:31 2007 +0200
description:
Message parser wasn't returning body blocks correctly, causing problems with
message body searches.
diffstat:
1 file changed, 12 insertions(+), 6 deletions(-)
src/lib-mail/message-parser.c | 18 ++++++++++++------
diffs (42 lines):
diff -r 69babcc2fb80 -r 950ce0b5edb5 src/lib-mail/message-parser.c
--- 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 @@ boundary_line_find(struct message_parser
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 @@ static int parse_next_body_skip_boundary
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 @@ static int parse_next_body_to_boundary(s
}
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);
}
More information about the dovecot-cvs
mailing list