From: Timo Sirainen Date: Tue, 9 Jan 2018 16:33:59 +0000 (-0500) Subject: lib-mail: Refactor code to make the next commit smaller X-Git-Tag: 2.3.1~183 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=eb7965367523635fe40bc9f151c46b144a92ca36;p=thirdparty%2Fdovecot%2Fcore.git lib-mail: Refactor code to make the next commit smaller --- diff --git a/src/lib-mail/message-address.c b/src/lib-mail/message-address.c index 9b99c2c784..efa3daa5ac 100644 --- a/src/lib-mail/message-address.c +++ b/src/lib-mail/message-address.c @@ -401,9 +401,9 @@ message_address_parse_real(pool_t pool, const unsigned char *data, size_t size, if (rfc822_skip_lwsp(&ctx.parser) <= 0) { /* no addresses */ - return NULL; + } else { + (void)parse_address_list(&ctx, max_addresses); } - (void)parse_address_list(&ctx, max_addresses); return ctx.first_addr; } diff --git a/src/lib-mail/message-id.c b/src/lib-mail/message-id.c index d6aa357143..772535b12e 100644 --- a/src/lib-mail/message-id.c +++ b/src/lib-mail/message-id.c @@ -9,6 +9,7 @@ static bool get_untokenized_msgid(const char **msgid_p, string_t *msgid) { struct rfc822_parser_context parser; int ret; + bool success = FALSE; rfc822_parser_init(&parser, (const unsigned char *)*msgid_p, strlen(*msgid_p), NULL); @@ -27,23 +28,18 @@ static bool get_untokenized_msgid(const char **msgid_p, string_t *msgid) ret = rfc822_parse_quoted_string(&parser, msgid); else ret = rfc822_parse_dot_atom(&parser, msgid); - if (ret <= 0) - return FALSE; - - if (*parser.data != '@') - return FALSE; - str_append_c(msgid, '@'); - parser.data++; - rfc822_skip_lwsp(&parser); - - if (rfc822_parse_dot_atom(&parser, msgid) <= 0) - return FALSE; - - if (*parser.data != '>') - return FALSE; - - *msgid_p = (const char *)parser.data + 1; - return TRUE; + if (ret > 0 && *parser.data == '@') { + str_append_c(msgid, '@'); + parser.data++; + rfc822_skip_lwsp(&parser); + + if (rfc822_parse_dot_atom(&parser, msgid) > 0 && + *parser.data == '>') { + *msgid_p = (const char *)parser.data + 1; + success = TRUE; + } + } + return success; } static void strip_lwsp(char *str) diff --git a/src/lib-mail/message-parser.c b/src/lib-mail/message-parser.c index 80ad96c9f5..94b9fdc914 100644 --- a/src/lib-mail/message-parser.c +++ b/src/lib-mail/message-parser.c @@ -500,9 +500,8 @@ static void parse_content_type(struct message_parser_ctx *ctx, ctx->part->flags |= MESSAGE_PART_FLAG_MULTIPART_DIGEST; } - if (ret < 0) - return; - if ((ctx->part->flags & MESSAGE_PART_FLAG_MULTIPART) == 0 || + if (ret < 0 || + (ctx->part->flags & MESSAGE_PART_FLAG_MULTIPART) == 0 || ctx->last_boundary != NULL) return;