Mercurial > dovecot > core-2.2
changeset 22168:fb24444dd968
lib-mail: message_address_parse() - Add INVALID_ROUTE/SYNTAX_ERROR only if fill_missing==TRUE
This allows message_address_write() to write the parsed invalid address in a
way that at least somewhat resembles the original input.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Wed, 07 Jun 2017 12:58:21 +0300 |
parents | 15ca457e629d |
children | 1c7f10f84fa2 |
files | src/lib-mail/message-address.c src/lib-mail/test-message-address.c |
diffstat | 2 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-mail/message-address.c Wed Jun 07 12:42:28 2017 +0300 +++ b/src/lib-mail/message-address.c Wed Jun 07 12:58:21 2017 +0300 @@ -151,7 +151,8 @@ if (*ctx->parser.data == '@') { if (parse_domain_list(ctx) <= 0 || *ctx->parser.data != ':') { - ctx->addr.route = "INVALID_ROUTE"; + if (ctx->fill_missing) + ctx->addr.route = "INVALID_ROUTE"; return -1; } ctx->parser.data++; @@ -191,7 +192,8 @@ } if (parse_angle_addr(ctx) < 0) { /* broken */ - ctx->addr.domain = "SYNTAX_ERROR"; + if (ctx->fill_missing) + ctx->addr.domain = "SYNTAX_ERROR"; ctx->addr.invalid_syntax = TRUE; } return ctx->parser.data != ctx->parser.end;
--- a/src/lib-mail/test-message-address.c Wed Jun 07 12:42:28 2017 +0300 +++ b/src/lib-mail/test-message-address.c Wed Jun 07 12:58:21 2017 +0300 @@ -26,6 +26,8 @@ { NULL, NULL, NULL, "user", "domain", FALSE } }, { "<user@domain>", NULL, { NULL, NULL, NULL, "user", "domain", FALSE } }, + { "<@route>", "<@route:\"\">", + { NULL, NULL, "@route", "", "", TRUE } }, { "<\"\"@domain>", "<\"\"@domain>", { NULL, NULL, NULL, "", "domain", FALSE } }, { "foo bar <user@domain>", "\"foo bar\" <user@domain>",