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++;
}
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;
{ 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>",