]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-mail: Refactor code to make the next commit smaller
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 9 Jan 2018 16:33:59 +0000 (11:33 -0500)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 6 Mar 2018 10:51:24 +0000 (12:51 +0200)
src/lib-mail/message-address.c
src/lib-mail/message-id.c
src/lib-mail/message-parser.c

index 88d638a42a69884bcad6600a7c9ad51650b14526..afeef889662ee858b7a8eb09c832b5b47789c552 100644 (file)
@@ -400,9 +400,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;
 }
 
index d6aa35714311192c5c7eed08ed7f5418f0052932..772535b12eda878a99878da3f562d39d9c442696 100644 (file)
@@ -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)
index 8caf7d8ff6e21279ff03698bd489a1dabf7a6412..b95448a32927953fc0377fe58c3c6711a14bfae8 100644 (file)
@@ -499,9 +499,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;