aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmime
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-04-25 10:10:16 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-04-25 10:10:16 +0100
commit5ea8345fa3deb583cc99d9d7aa7659b90aad3743 (patch)
tree9e3d737fea0e9cedf822b1237fb5298ce532de44 /src/libmime
parenta8ed49768138129c1d4f92e1adae5803219b21cb (diff)
downloadrspamd-5ea8345fa3deb583cc99d9d7aa7659b90aad3743.tar.gz
rspamd-5ea8345fa3deb583cc99d9d7aa7659b90aad3743.zip
[Feature] Unescape and unquote smtp addresses
Diffstat (limited to 'src/libmime')
-rw-r--r--src/libmime/email_addr.c41
-rw-r--r--src/libmime/email_addr.h4
-rw-r--r--src/libmime/parsers/smtp_addr_parser.c731
3 files changed, 430 insertions, 346 deletions
diff --git a/src/libmime/email_addr.c b/src/libmime/email_addr.c
index 6dfc6f0c6..9305e4693 100644
--- a/src/libmime/email_addr.c
+++ b/src/libmime/email_addr.c
@@ -24,12 +24,44 @@
static void
rspamd_email_addr_dtor (struct rspamd_email_address *addr)
{
- if (addr->flags & RSPAMD_EMAIL_ADDR_ALLOCATED) {
+ if (addr->flags & RSPAMD_EMAIL_ADDR_ADDR_ALLOCATED) {
g_free ((void *)addr->addr);
}
+
+ if (addr->flags & RSPAMD_EMAIL_ADDR_USER_ALLOCATED) {
+ g_free ((void *)addr->user);
+ }
+
g_slice_free1 (sizeof (*addr), addr);
}
+static void
+rspamd_email_address_unescape (struct rspamd_email_address *addr)
+{
+ const char *h, *end;
+ char *t, *d;
+
+ if (addr->user_len == 0) {
+ return;
+ }
+
+ d = g_malloc (addr->user_len);
+ t = d;
+ h = addr->user;
+ end = h + addr->user_len;
+
+ while (h < end) {
+ if (*h != '\\') {
+ *t++ = *h;
+ }
+ h ++;
+ }
+
+ addr->user = d;
+ addr->user_len = t - d;
+ addr->flags |= RSPAMD_EMAIL_ADDR_USER_ALLOCATED;
+}
+
struct rspamd_email_address *
rspamd_email_address_from_smtp (const gchar *str, guint len)
{
@@ -47,13 +79,18 @@ rspamd_email_address_from_smtp (const gchar *str, guint len)
memcpy (ret, &addr, sizeof (addr));
if ((ret->flags & RSPAMD_EMAIL_ADDR_QUOTED) && ret->addr[0] == '"') {
+ if (ret->flags & RSPAMD_EMAIL_ADDR_HAS_BACKSLASH) {
+ /* We also need to unquote user */
+ rspamd_email_address_unescape (ret);
+ }
+
/* We need to unquote addr */
nlen = ret->domain_len + ret->user_len + 2;
ret->addr = g_malloc (nlen + 1);
ret->addr_len = rspamd_snprintf ((char *)ret->addr, nlen, "%*s@%*s",
(gint)ret->user_len, ret->user,
(gint)ret->domain_len, ret->domain);
- ret->flags |= RSPAMD_EMAIL_ADDR_ALLOCATED;
+ ret->flags |= RSPAMD_EMAIL_ADDR_ADDR_ALLOCATED;
}
REF_INIT_RETAIN (ret, rspamd_email_addr_dtor);
diff --git a/src/libmime/email_addr.h b/src/libmime/email_addr.h
index 7009c472d..98be33abe 100644
--- a/src/libmime/email_addr.h
+++ b/src/libmime/email_addr.h
@@ -28,7 +28,9 @@ enum rspamd_email_address_flags {
RSPAMD_EMAIL_ADDR_QUOTED = (1 << 3),
RSPAMD_EMAIL_ADDR_EMPTY = (1 << 4),
RSPAMD_EMAIL_ADDR_SMTP = (1 << 5),
- RSPAMD_EMAIL_ADDR_ALLOCATED = (1 << 6),
+ RSPAMD_EMAIL_ADDR_HAS_BACKSLASH = (1 << 6),
+ RSPAMD_EMAIL_ADDR_ADDR_ALLOCATED = (1 << 7),
+ RSPAMD_EMAIL_ADDR_USER_ALLOCATED = (1 << 8),
};
/*
diff --git a/src/libmime/parsers/smtp_addr_parser.c b/src/libmime/parsers/smtp_addr_parser.c
index f5476054f..12cf5eecb 100644
--- a/src/libmime/parsers/smtp_addr_parser.c
+++ b/src/libmime/parsers/smtp_addr_parser.c
@@ -1,7 +1,7 @@
#line 1 "src/ragel/smtp_addr_parser.rl"
-#line 76 "src/ragel/smtp_addr_parser.rl"
+#line 80 "src/ragel/smtp_addr_parser.rl"
@@ -10,26 +10,27 @@ static const char _smtp_addr_parser_trans_keys[] = {
0, 0, 9, 126, 33, 126, 33, 126, 48, 122, 48, 122, 48, 122, 48, 122,
46, 122, 48, 57, 46, 57, 48, 57, 46, 57, 48, 57, 48, 93, 48, 93,
93, 93, 46, 57, 46, 46, 46, 57, 46, 46, 46, 122, 46, 122, 48, 122,
- 33, 126, 33, 126, 48, 122, 32, 126, 32, 126, 64, 64, 32, 126, 33, 126,
- 33, 126, 33, 126, 48, 122, 46, 122, 48, 122, 48, 122, 48, 122, 46, 122,
- 48, 57, 46, 57, 48, 57, 46, 57, 48, 57, 48, 93, 48, 93, 93, 93,
- 62, 62, 46, 57, 46, 46, 46, 57, 46, 46, 46, 122, 46, 122, 48, 122,
- 33, 126, 33, 126, 48, 122, 32, 126, 32, 126, 64, 64, 32, 126, 48, 122,
- 44, 122, 64, 64, 33, 126, 48, 122, 48, 122, 44, 122, 64, 64, 33, 126,
- 48, 122, 9, 122, 9, 32, 9, 32, 9, 32, 9, 32, 0
+ 33, 126, 33, 126, 48, 122, 32, 126, 32, 126, 64, 64, 32, 126, 32, 126,
+ 33, 126, 33, 126, 33, 126, 48, 122, 46, 122, 48, 122, 48, 122, 48, 122,
+ 46, 122, 48, 57, 46, 57, 48, 57, 46, 57, 48, 57, 48, 93, 48, 93,
+ 93, 93, 62, 62, 46, 57, 46, 46, 46, 57, 46, 46, 46, 122, 46, 122,
+ 48, 122, 33, 126, 33, 126, 48, 122, 32, 126, 32, 126, 64, 64, 32, 126,
+ 32, 126, 48, 122, 44, 122, 64, 64, 33, 126, 48, 122, 48, 122, 44, 122,
+ 64, 64, 33, 126, 48, 122, 9, 122, 9, 32, 9, 32, 9, 32, 9, 32,
+ 0
};
static const char _smtp_addr_parser_key_spans[] = {
0, 118, 94, 94, 75, 75, 75, 75,
77, 10, 12, 10, 12, 10, 46, 46,
1, 12, 1, 12, 1, 77, 77, 75,
- 94, 94, 75, 95, 95, 1, 95, 94,
- 94, 94, 75, 77, 75, 75, 75, 77,
- 10, 12, 10, 12, 10, 46, 46, 1,
- 1, 12, 1, 12, 1, 77, 77, 75,
- 94, 94, 75, 95, 95, 1, 95, 75,
- 79, 1, 94, 75, 75, 79, 1, 94,
- 75, 114, 24, 24, 24, 24
+ 94, 94, 75, 95, 95, 1, 95, 95,
+ 94, 94, 94, 75, 77, 75, 75, 75,
+ 77, 10, 12, 10, 12, 10, 46, 46,
+ 1, 1, 12, 1, 12, 1, 77, 77,
+ 75, 94, 94, 75, 95, 95, 1, 95,
+ 95, 75, 79, 1, 94, 75, 75, 79,
+ 1, 94, 75, 114, 24, 24, 24, 24
};
static const short _smtp_addr_parser_index_offsets[] = {
@@ -37,12 +38,12 @@ static const short _smtp_addr_parser_index_offsets[] = {
613, 691, 702, 715, 726, 739, 750, 797,
844, 846, 859, 861, 874, 876, 954, 1032,
1108, 1203, 1298, 1374, 1470, 1566, 1568, 1664,
- 1759, 1854, 1949, 2025, 2103, 2179, 2255, 2331,
- 2409, 2420, 2433, 2444, 2457, 2468, 2515, 2562,
- 2564, 2566, 2579, 2581, 2594, 2596, 2674, 2752,
- 2828, 2923, 3018, 3094, 3190, 3286, 3288, 3384,
- 3460, 3540, 3542, 3637, 3713, 3789, 3869, 3871,
- 3966, 4042, 4157, 4182, 4207, 4232
+ 1760, 1855, 1950, 2045, 2121, 2199, 2275, 2351,
+ 2427, 2505, 2516, 2529, 2540, 2553, 2564, 2611,
+ 2658, 2660, 2662, 2675, 2677, 2690, 2692, 2770,
+ 2848, 2924, 3019, 3114, 3190, 3286, 3382, 3384,
+ 3480, 3576, 3652, 3732, 3734, 3829, 3905, 3981,
+ 4061, 4063, 4158, 4234, 4349, 4374, 4399, 4424
};
static const char _smtp_addr_parser_indicies[] = {
@@ -242,321 +243,345 @@ static const char _smtp_addr_parser_indicies[] = {
38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 1, 41,
- 1, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 1, 42, 43, 42, 42, 42, 42, 42,
- 1, 1, 42, 42, 1, 1, 1, 42,
+ 1, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 1, 1, 1, 42, 44, 42,
- 45, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 1, 1, 1, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 1,
- 46, 1, 46, 46, 46, 46, 46, 1,
- 1, 46, 46, 1, 1, 47, 46, 46,
- 46, 46, 46, 46, 46, 46, 46, 46,
- 46, 1, 1, 1, 46, 1, 46, 48,
- 46, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 1, 1, 1, 46, 46, 46,
- 46, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 46, 46, 46, 46, 1, 46,
- 1, 46, 46, 46, 46, 46, 1, 1,
- 46, 46, 1, 1, 1, 46, 46, 46,
- 46, 46, 46, 46, 46, 46, 46, 46,
- 1, 1, 1, 46, 1, 46, 1, 46,
+ 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42,
+ 1, 43, 43, 44, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 45, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43,
+ 1, 46, 47, 46, 46, 46, 46, 46,
+ 1, 1, 46, 46, 1, 1, 1, 46,
46, 46, 46, 46, 46, 46, 46, 46,
+ 46, 46, 1, 1, 1, 46, 48, 46,
+ 49, 46, 46, 46, 46, 46, 46, 46,
46, 46, 46, 46, 46, 46, 46, 46,
46, 46, 46, 46, 46, 46, 46, 46,
- 46, 1, 1, 1, 46, 46, 46, 46,
+ 46, 46, 46, 1, 1, 1, 46, 46,
46, 46, 46, 46, 46, 46, 46, 46,
46, 46, 46, 46, 46, 46, 46, 46,
46, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 46, 46, 46, 1, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49,
- 1, 1, 1, 1, 1, 1, 1, 49,
- 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 50, 1, 1, 1, 1, 1, 49,
- 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 1, 51, 1, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 1, 1,
- 1, 1, 53, 1, 1, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 1,
- 1, 1, 1, 54, 1, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 1,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 1, 1, 1, 1, 1, 1,
- 1, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 1, 1, 1, 1, 1,
- 1, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 1, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 1, 1,
- 1, 1, 1, 1, 1, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 1,
- 1, 1, 1, 54, 1, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 1,
- 55, 55, 55, 55, 55, 55, 55, 55,
- 55, 55, 1, 1, 1, 1, 1, 1,
+ 46, 46, 46, 46, 46, 46, 46, 1,
+ 50, 1, 50, 50, 50, 50, 50, 1,
+ 1, 50, 50, 1, 1, 51, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 1, 1, 1, 50, 1, 50, 52,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 1, 1, 1, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 1, 50,
+ 1, 50, 50, 50, 50, 50, 1, 1,
+ 50, 50, 1, 1, 1, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 1, 1, 1, 50, 1, 50, 1, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 1, 1, 1, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 1, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53,
+ 1, 1, 1, 1, 1, 1, 1, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 54, 1, 1, 1, 1, 1, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 1, 55, 1, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 1, 1,
+ 1, 1, 57, 1, 1, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 1,
+ 1, 1, 1, 58, 1, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 1,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 1, 1, 1, 1, 1, 1,
1, 56, 56, 56, 56, 56, 56, 56,
56, 56, 56, 56, 56, 56, 56, 56,
56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 1, 1, 1, 1, 57,
+ 56, 56, 56, 1, 1, 1, 1, 1,
1, 56, 56, 56, 56, 56, 56, 56,
56, 56, 56, 56, 56, 56, 56, 56,
56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 1, 58, 1, 59, 59,
+ 56, 56, 56, 1, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 1, 1,
+ 1, 1, 1, 1, 1, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 1,
+ 1, 1, 1, 58, 1, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 1,
59, 59, 59, 59, 59, 59, 59, 59,
- 60, 1, 1, 1, 1, 1, 1, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 1, 1, 1, 1, 62, 1, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 1, 63, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 1, 64, 1, 65,
+ 59, 59, 1, 1, 1, 1, 1, 1,
+ 1, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 1, 1, 1, 1, 61,
+ 1, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 1, 62, 1, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 64, 1, 1, 1, 1, 1, 1, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 1, 1, 1, 1, 66, 1, 65,
65, 65, 65, 65, 65, 65, 65, 65,
- 65, 1, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 1, 67, 1, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 1, 69, 69, 69, 69, 69, 69,
- 69, 69, 69, 69, 1, 70, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 1,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 1, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 1, 68, 1, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 1, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 1, 71, 1, 72,
+ 72, 72, 72, 72, 72, 72, 72, 72,
+ 72, 1, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 1, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 71, 1, 72, 72, 72, 72,
- 72, 72, 72, 72, 72, 72, 1, 1,
+ 1, 1, 75, 1, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 1, 71, 1, 71, 1, 73, 1, 67,
- 1, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 1, 67, 1, 64, 1,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 1, 64, 1, 58, 1, 76,
- 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 60, 1, 1, 1, 1, 1, 1,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 1, 1, 1, 1, 62, 1,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 1, 58, 1, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 60,
- 1, 1, 1, 1, 1, 1, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 1, 1, 1, 1, 62, 1, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 1, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 60, 1, 1, 1, 1,
- 1, 1, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 1, 1, 1, 1,
- 62, 1, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 1, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 1,
- 1, 1, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 1, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 1, 1,
- 71, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 1, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 1, 1, 1,
- 1, 1, 1, 1, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 1, 1,
- 1, 1, 62, 1, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 1, 78,
- 78, 79, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 80, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 1, 81,
- 81, 82, 81, 81, 81, 81, 81, 81,
- 81, 81, 81, 81, 81, 81, 81, 81,
- 81, 81, 81, 81, 81, 81, 81, 81,
+ 1, 75, 1, 75, 1, 77, 1, 71,
+ 1, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 1, 71, 1, 68, 1,
+ 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 1, 68, 1, 62, 1, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 64, 1, 1, 1, 1, 1, 1,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 1, 1, 1, 1, 66, 1,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 1, 62, 1, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 64,
+ 1, 1, 1, 1, 1, 1, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 1, 1, 1, 1, 66, 1, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 1, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 64, 1, 1, 1, 1,
+ 1, 1, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 1, 1, 1, 1,
+ 66, 1, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 1, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
- 81, 81, 81, 83, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 1,
+ 1, 1, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
- 81, 81, 81, 81, 81, 81, 1, 84,
- 1, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 1, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 1, 1,
+ 75, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
81, 81, 81, 81, 81, 81, 81, 81,
- 1, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 1, 1, 1, 1, 1,
- 1, 1, 85, 85, 85, 85, 85, 85,
+ 81, 81, 1, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 1, 1, 1,
+ 1, 1, 1, 1, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 1, 1,
+ 1, 1, 66, 1, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 1, 82,
+ 82, 83, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 84, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82,
+ 82, 82, 82, 82, 82, 82, 1, 85,
+ 85, 86, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 85, 1, 1, 1, 1,
- 1, 1, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 85, 1, 86, 1, 87,
- 1, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 88, 1, 1, 1, 1,
- 1, 1, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 85, 1, 1, 1, 1,
- 89, 1, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 87, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85,
85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 85, 1, 87, 1, 90,
- 91, 90, 90, 90, 90, 90, 1, 1,
- 90, 90, 1, 1, 1, 90, 90, 90,
+ 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 1, 88,
+ 1, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89,
+ 1, 90, 90, 91, 90, 90, 90, 90,
90, 90, 90, 90, 90, 90, 90, 90,
- 1, 1, 1, 90, 1, 90, 1, 90,
90, 90, 90, 90, 90, 90, 90, 90,
90, 90, 90, 90, 90, 90, 90, 90,
90, 90, 90, 90, 90, 90, 90, 90,
- 90, 1, 1, 1, 90, 90, 90, 90,
90, 90, 90, 90, 90, 90, 90, 90,
90, 90, 90, 90, 90, 90, 90, 90,
+ 90, 90, 90, 90, 90, 92, 90, 90,
90, 90, 90, 90, 90, 90, 90, 90,
- 90, 90, 90, 90, 90, 1, 85, 85,
- 85, 85, 85, 85, 85, 85, 85, 85,
- 1, 1, 1, 1, 1, 1, 1, 85,
- 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 1, 1, 1, 1, 89, 1, 85,
- 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 1, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 1, 1, 1, 1,
- 1, 1, 1, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 1, 1, 1,
- 1, 1, 1, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 1, 93, 1,
- 94, 1, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 95, 1, 1, 1,
- 1, 1, 1, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 1, 1, 1,
- 1, 96, 1, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 1, 94, 1,
- 97, 98, 97, 97, 97, 97, 97, 1,
- 1, 97, 97, 1, 1, 1, 97, 97,
- 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 1, 1, 1, 97, 1, 97, 1,
- 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 97, 1, 1, 1, 97, 97, 97,
- 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 97, 97, 97, 97, 97, 1, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 1, 1, 1, 1, 1, 1, 1,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 1, 1, 1, 1, 96, 1,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 1, 99, 99, 99, 99, 99,
+ 90, 90, 90, 90, 90, 90, 90, 90,
+ 90, 90, 90, 90, 90, 90, 90, 90,
+ 90, 90, 90, 90, 90, 90, 90, 90,
+ 1, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 1, 1, 1, 1, 1,
+ 1, 1, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 1, 1, 1, 1,
+ 1, 1, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 1, 94, 1, 95,
+ 1, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 96, 1, 1, 1, 1,
+ 1, 1, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 1, 1, 1, 1,
+ 97, 1, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 1, 95, 1, 98,
+ 99, 98, 98, 98, 98, 98, 1, 1,
+ 98, 98, 1, 1, 1, 98, 98, 98,
+ 98, 98, 98, 98, 98, 98, 98, 98,
+ 1, 1, 1, 98, 1, 98, 1, 98,
+ 98, 98, 98, 98, 98, 98, 98, 98,
+ 98, 98, 98, 98, 98, 98, 98, 98,
+ 98, 98, 98, 98, 98, 98, 98, 98,
+ 98, 1, 1, 1, 98, 98, 98, 98,
+ 98, 98, 98, 98, 98, 98, 98, 98,
+ 98, 98, 98, 98, 98, 98, 98, 98,
+ 98, 98, 98, 98, 98, 98, 98, 98,
+ 98, 98, 98, 98, 98, 1, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 1, 1, 1, 1, 1, 1, 1, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 1, 1, 1, 1, 97, 1, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 1, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 1, 1, 1, 1,
+ 1, 1, 1, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 1, 1, 1,
+ 1, 1, 1, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 1, 101, 1,
+ 102, 1, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 103, 1, 1, 1,
+ 1, 1, 1, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 1, 1, 1,
+ 1, 104, 1, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 1, 102, 1,
+ 105, 106, 105, 105, 105, 105, 105, 1,
+ 1, 105, 105, 1, 1, 1, 105, 105,
+ 105, 105, 105, 105, 105, 105, 105, 105,
+ 105, 1, 1, 1, 105, 1, 105, 1,
+ 105, 105, 105, 105, 105, 105, 105, 105,
+ 105, 105, 105, 105, 105, 105, 105, 105,
+ 105, 105, 105, 105, 105, 105, 105, 105,
+ 105, 105, 1, 1, 1, 105, 105, 105,
+ 105, 105, 105, 105, 105, 105, 105, 105,
+ 105, 105, 105, 105, 105, 105, 105, 105,
+ 105, 105, 105, 105, 105, 105, 105, 105,
+ 105, 105, 105, 105, 105, 105, 1, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 1, 1, 1, 1, 1, 1, 1,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 1, 1, 1, 1, 104, 1,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 1, 107, 107, 107, 107, 107,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 99, 1, 1, 1, 1, 1,
+ 1, 1, 107, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 100, 1, 11, 11, 11, 11, 11, 11,
+ 108, 1, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 1, 1, 1, 1,
1, 1, 1, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11,
@@ -565,37 +590,38 @@ static const char _smtp_addr_parser_indicies[] = {
1, 12, 1, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 11, 11, 1, 101, 101,
- 101, 101, 101, 1, 1, 1, 1, 1,
+ 11, 11, 11, 11, 11, 1, 109, 109,
+ 109, 109, 109, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 101, 1, 102,
- 102, 102, 102, 102, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 109, 1, 110,
+ 110, 110, 110, 110, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 102, 1,
- 103, 103, 103, 103, 103, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 110, 1,
+ 111, 111, 111, 111, 111, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 103,
- 1, 104, 104, 104, 104, 104, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 111,
+ 1, 112, 112, 112, 112, 112, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 104, 1, 0
+ 112, 1, 0
};
static const char _smtp_addr_parser_trans_targs[] = {
- 1, 0, 2, 27, 31, 68, 2, 3,
- 4, 73, 7, 73, 6, 8, 23, 26,
+ 1, 0, 2, 27, 32, 70, 2, 3,
+ 4, 75, 7, 75, 6, 8, 23, 26,
9, 21, 24, 23, 26, 10, 11, 19,
- 12, 13, 17, 14, 15, 75, 16, 18,
+ 12, 13, 17, 14, 15, 77, 16, 18,
20, 22, 25, 28, 29, 30, 28, 29,
- 30, 4, 32, 59, 77, 63, 32, 33,
- 34, 35, 38, 36, 35, 76, 37, 39,
- 55, 58, 40, 53, 56, 55, 58, 41,
- 42, 51, 43, 44, 49, 45, 46, 48,
- 47, 76, 50, 52, 54, 57, 60, 61,
- 62, 60, 61, 62, 34, 64, 65, 63,
- 66, 67, 32, 59, 69, 70, 68, 71,
- 72, 2, 27, 74, 5, 74, 74, 74,
- 74
+ 30, 4, 31, 28, 29, 30, 33, 60,
+ 79, 65, 33, 34, 35, 36, 39, 37,
+ 36, 78, 38, 40, 56, 59, 41, 54,
+ 57, 56, 59, 42, 43, 52, 44, 45,
+ 50, 46, 47, 49, 48, 78, 51, 53,
+ 55, 58, 61, 62, 63, 61, 62, 63,
+ 35, 64, 61, 62, 63, 66, 67, 65,
+ 68, 69, 33, 60, 71, 72, 70, 73,
+ 74, 2, 27, 76, 5, 76, 76, 76,
+ 76
};
static const char _smtp_addr_parser_trans_actions[] = {
@@ -604,15 +630,16 @@ static const char _smtp_addr_parser_trans_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 6, 0, 0,
0, 0, 0, 7, 8, 7, 0, 3,
- 0, 9, 10, 11, 0, 11, 0, 0,
- 3, 4, 0, 0, 0, 12, 0, 5,
- 5, 5, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 6,
- 0, 13, 0, 0, 0, 0, 7, 8,
- 7, 0, 3, 0, 9, 0, 0, 0,
+ 0, 9, 0, 10, 11, 10, 12, 13,
+ 0, 13, 0, 0, 3, 4, 0, 0,
+ 0, 14, 0, 5, 5, 5, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 0, 15, 0, 0,
+ 0, 0, 7, 8, 7, 0, 3, 0,
+ 9, 0, 10, 11, 10, 0, 0, 0,
0, 0, 7, 0, 0, 0, 0, 0,
- 0, 7, 0, 14, 0, 0, 15, 16,
- 17
+ 0, 7, 0, 16, 0, 0, 17, 18,
+ 19
};
static const char _smtp_addr_parser_eof_actions[] = {
@@ -625,17 +652,17 @@ static const char _smtp_addr_parser_eof_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 14, 0, 15, 16, 17
+ 0, 0, 0, 16, 0, 17, 18, 19
};
static const int smtp_addr_parser_start = 1;
-static const int smtp_addr_parser_first_final = 73;
+static const int smtp_addr_parser_first_final = 75;
static const int smtp_addr_parser_error = 0;
static const int smtp_addr_parser_en_main = 1;
-#line 79 "src/ragel/smtp_addr_parser.rl"
+#line 83 "src/ragel/smtp_addr_parser.rl"
static int
rspamd_smtp_addr_parse (const char *data, size_t len, struct rspamd_email_address *addr)
@@ -650,14 +677,14 @@ rspamd_smtp_addr_parse (const char *data, size_t len, struct rspamd_email_addres
eof = pe;
-#line 654 "src/libmime/parsers/smtp_addr_parser.c"
+#line 681 "src/libmime/parsers/smtp_addr_parser.c"
{
cs = smtp_addr_parser_start;
}
-#line 93 "src/ragel/smtp_addr_parser.rl"
+#line 97 "src/ragel/smtp_addr_parser.rl"
-#line 661 "src/libmime/parsers/smtp_addr_parser.c"
+#line 688 "src/libmime/parsers/smtp_addr_parser.c"
{
int _slen;
int _trans;
@@ -717,32 +744,38 @@ _resume:
}
}
break;
- case 9:
+ case 10:
#line 36 "src/ragel/smtp_addr_parser.rl"
{
+ addr->flags |= RSPAMD_EMAIL_ADDR_HAS_BACKSLASH;
+ }
+ break;
+ case 9:
+#line 40 "src/ragel/smtp_addr_parser.rl"
+ {
addr->flags |= RSPAMD_EMAIL_ADDR_QUOTED;
}
break;
- case 16:
-#line 47 "src/ragel/smtp_addr_parser.rl"
+ case 18:
+#line 51 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
- case 11:
-#line 51 "src/ragel/smtp_addr_parser.rl"
+ case 13:
+#line 55 "src/ragel/smtp_addr_parser.rl"
{
addr->addr = p;
}
break;
case 2:
-#line 55 "src/ragel/smtp_addr_parser.rl"
+#line 59 "src/ragel/smtp_addr_parser.rl"
{
addr->addr = p;
}
break;
- case 13:
-#line 59 "src/ragel/smtp_addr_parser.rl"
+ case 15:
+#line 63 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
if (addr->addr) {
@@ -762,14 +795,14 @@ _resume:
}
}
break;
- case 12:
+ case 14:
#line 19 "src/ragel/smtp_addr_parser.rl"
{
if (addr->domain) {
addr->domain_len = p - addr->domain;
}
}
-#line 59 "src/ragel/smtp_addr_parser.rl"
+#line 63 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
if (addr->addr) {
@@ -777,21 +810,33 @@ _resume:
}
}
break;
- case 17:
-#line 40 "src/ragel/smtp_addr_parser.rl"
+ case 11:
+#line 36 "src/ragel/smtp_addr_parser.rl"
+ {
+ addr->flags |= RSPAMD_EMAIL_ADDR_HAS_BACKSLASH;
+ }
+#line 9 "src/ragel/smtp_addr_parser.rl"
+ {
+ if (addr->user) {
+ addr->user_len = p - addr->user;
+ }
+ }
+ break;
+ case 19:
+#line 44 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_EMPTY;
addr->addr = "";
addr->user = addr->addr;
addr->domain = addr->addr;
}
-#line 47 "src/ragel/smtp_addr_parser.rl"
+#line 51 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
- case 10:
-#line 51 "src/ragel/smtp_addr_parser.rl"
+ case 12:
+#line 55 "src/ragel/smtp_addr_parser.rl"
{
addr->addr = p;
}
@@ -801,7 +846,7 @@ _resume:
}
break;
case 1:
-#line 55 "src/ragel/smtp_addr_parser.rl"
+#line 59 "src/ragel/smtp_addr_parser.rl"
{
addr->addr = p;
}
@@ -810,39 +855,39 @@ _resume:
addr->user = p;
}
break;
- case 15:
-#line 66 "src/ragel/smtp_addr_parser.rl"
+ case 17:
+#line 70 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
if (addr->addr) {
addr->addr_len = p - addr->addr;
}
}
-#line 47 "src/ragel/smtp_addr_parser.rl"
+#line 51 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
- case 14:
+ case 16:
#line 19 "src/ragel/smtp_addr_parser.rl"
{
if (addr->domain) {
addr->domain_len = p - addr->domain;
}
}
-#line 66 "src/ragel/smtp_addr_parser.rl"
+#line 70 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
if (addr->addr) {
addr->addr_len = p - addr->addr;
}
}
-#line 47 "src/ragel/smtp_addr_parser.rl"
+#line 51 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
-#line 846 "src/libmime/parsers/smtp_addr_parser.c"
+#line 891 "src/libmime/parsers/smtp_addr_parser.c"
}
_again:
@@ -854,65 +899,65 @@ _again:
if ( p == eof )
{
switch ( _smtp_addr_parser_eof_actions[cs] ) {
- case 16:
-#line 47 "src/ragel/smtp_addr_parser.rl"
+ case 18:
+#line 51 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
- case 17:
-#line 40 "src/ragel/smtp_addr_parser.rl"
+ case 19:
+#line 44 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_EMPTY;
addr->addr = "";
addr->user = addr->addr;
addr->domain = addr->addr;
}
-#line 47 "src/ragel/smtp_addr_parser.rl"
+#line 51 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
- case 15:
-#line 66 "src/ragel/smtp_addr_parser.rl"
+ case 17:
+#line 70 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
if (addr->addr) {
addr->addr_len = p - addr->addr;
}
}
-#line 47 "src/ragel/smtp_addr_parser.rl"
+#line 51 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
- case 14:
+ case 16:
#line 19 "src/ragel/smtp_addr_parser.rl"
{
if (addr->domain) {
addr->domain_len = p - addr->domain;
}
}
-#line 66 "src/ragel/smtp_addr_parser.rl"
+#line 70 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
if (addr->addr) {
addr->addr_len = p - addr->addr;
}
}
-#line 47 "src/ragel/smtp_addr_parser.rl"
+#line 51 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
-#line 909 "src/libmime/parsers/smtp_addr_parser.c"
+#line 954 "src/libmime/parsers/smtp_addr_parser.c"
}
}
_out: {}
}
-#line 94 "src/ragel/smtp_addr_parser.rl"
+#line 98 "src/ragel/smtp_addr_parser.rl"
return cs;
}