From: Timo Sirainen Date: Thu, 23 Apr 2020 08:33:31 +0000 (+0300) Subject: lib-mail: message-parser - Add a message_part_finish() helper function X-Git-Tag: 2.3.11.2~56 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=13f93dbe5f13937ba0914d05b762f6657c044909;p=thirdparty%2Fdovecot%2Fcore.git lib-mail: message-parser - Add a message_part_finish() helper function --- diff --git a/src/lib-mail/message-parser.c b/src/lib-mail/message-parser.c index 653f964118..9a98cc83a3 100644 --- a/src/lib-mail/message-parser.c +++ b/src/lib-mail/message-parser.c @@ -150,6 +150,13 @@ message_part_append(pool_t pool, struct message_part *parent) return part; } +static void message_part_finish(struct message_parser_ctx *ctx) +{ + message_size_add(&ctx->part->parent->body_size, &ctx->part->body_size); + message_size_add(&ctx->part->parent->body_size, &ctx->part->header_size); + ctx->part = ctx->part->parent; +} + static void parse_next_body_multipart_init(struct message_parser_ctx *ctx) { struct message_boundary *b; @@ -267,19 +274,16 @@ static int parse_part_finish(struct message_parser_ctx *ctx, struct message_boundary *boundary, struct message_block *block_r, bool first_line) { - struct message_part *part; size_t line_size; i_assert(ctx->last_boundary == NULL); /* get back to parent MIME part, summing the child MIME part sizes into parent's body sizes */ - for (part = ctx->part; part != boundary->part; part = part->parent) { - message_size_add(&part->parent->body_size, &part->body_size); - message_size_add(&part->parent->body_size, &part->header_size); + while (ctx->part != boundary->part) { + message_part_finish(ctx); + i_assert(ctx->part != NULL); } - i_assert(part != NULL); - ctx->part = part; if (boundary->epilogue_found) { /* this boundary isn't needed anymore */ @@ -734,13 +738,8 @@ int message_parser_parse_next_block(struct message_parser_ctx *ctx, i_assert(ctx->input->eof || ctx->input->closed || ctx->input->stream_errno != 0 || ctx->broken_reason != NULL); - while (ctx->part->parent != NULL) { - message_size_add(&ctx->part->parent->body_size, - &ctx->part->body_size); - message_size_add(&ctx->part->parent->body_size, - &ctx->part->header_size); - ctx->part = ctx->part->parent; - } + while (ctx->part->parent != NULL) + message_part_finish(ctx); } if (block_r->size == 0) {