aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-04-25 09:40:00 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-04-25 09:40:00 +0100
commitdc5966e5907dc159452ebe86b4ac6d656f7c806d (patch)
treef2dbfa1ad0d40c376af5726ff67de8e8bbfbae49
parent41219c6320a4c9744e5a051070fc78c1dd6403dd (diff)
downloadrspamd-dc5966e5907dc159452ebe86b4ac6d656f7c806d.tar.gz
rspamd-dc5966e5907dc159452ebe86b4ac6d656f7c806d.zip
[Fix] Fix SMTP address parsing machine
-rw-r--r--src/libmime/parsers/smtp_addr_parser.c875
-rw-r--r--src/ragel/smtp_addr_parser.rl23
-rw-r--r--src/ragel/smtp_address.rl8
3 files changed, 515 insertions, 391 deletions
diff --git a/src/libmime/parsers/smtp_addr_parser.c b/src/libmime/parsers/smtp_addr_parser.c
index df6239332..f5476054f 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 57 "src/ragel/smtp_addr_parser.rl"
+#line 76 "src/ragel/smtp_addr_parser.rl"
@@ -10,39 +10,39 @@ 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, 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, 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, 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
};
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, 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, 1, 95, 75, 79, 1,
- 94, 75, 75, 79, 1, 94, 75, 114,
- 24, 24, 24, 24
+ 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
};
static const short _smtp_addr_parser_index_offsets[] = {
0, 0, 119, 214, 309, 385, 461, 537,
613, 691, 702, 715, 726, 739, 750, 797,
844, 846, 859, 861, 874, 876, 954, 1032,
- 1108, 1203, 1298, 1374, 1470, 1472, 1568, 1663,
- 1758, 1853, 1929, 2007, 2083, 2159, 2235, 2313,
- 2324, 2337, 2348, 2361, 2372, 2419, 2466, 2468,
- 2470, 2483, 2485, 2498, 2500, 2578, 2656, 2732,
- 2827, 2922, 2998, 3094, 3096, 3192, 3268, 3348,
- 3350, 3445, 3521, 3597, 3677, 3679, 3774, 3850,
- 3965, 3990, 4015, 4040
+ 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
};
static const char _smtp_addr_parser_indicies[] = {
@@ -230,309 +230,333 @@ static const char _smtp_addr_parser_indicies[] = {
35, 35, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35, 35, 35, 1, 38,
- 1, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 1, 39, 40, 39, 39, 39, 39, 39,
- 1, 1, 39, 39, 1, 1, 1, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 1, 1, 1, 39, 41, 39,
- 42, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 1, 1, 1, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 1,
- 43, 1, 43, 43, 43, 43, 43, 1,
- 1, 43, 43, 1, 1, 44, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 1, 1, 1, 43, 1, 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, 1, 1, 1, 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, 43,
- 1, 43, 43, 43, 43, 43, 1, 1,
- 43, 43, 1, 1, 1, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 1, 1, 1, 43, 1, 43, 1, 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, 1, 1, 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, 46,
+ 38, 39, 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, 40, 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, 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,
+ 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,
- 1, 1, 1, 1, 1, 1, 1, 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, 47, 1, 1, 1, 1, 1, 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, 1, 48, 1, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 1, 1,
- 1, 1, 50, 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,
- 1, 1, 1, 51, 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,
- 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,
+ 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,
+ 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, 49, 49,
49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 49, 1, 1, 1, 1, 1,
- 1, 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, 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, 50, 1, 1, 1, 1, 1, 49,
49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 1,
- 1, 1, 1, 51, 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,
+ 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, 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, 1, 1, 1, 54,
- 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,
+ 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,
+ 1, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
56, 56, 56, 56, 56, 56, 56, 56,
- 57, 1, 1, 1, 1, 1, 1, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 1, 1, 1, 1, 59, 1, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 1, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 1, 61, 1, 62,
- 62, 62, 62, 62, 62, 62, 62, 62,
- 62, 1, 63, 63, 63, 63, 63, 63,
+ 56, 56, 56, 1, 1, 1, 1, 57,
+ 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,
+ 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,
65, 65, 65, 65, 65, 65, 65, 65,
65, 1, 66, 66, 66, 66, 66, 66,
- 66, 66, 66, 66, 1, 67, 67, 67,
- 67, 67, 67, 67, 67, 67, 67, 1,
+ 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,
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, 68, 1, 69, 69, 69, 69,
- 69, 69, 69, 69, 69, 69, 1, 1,
+ 1, 1, 71, 1, 72, 72, 72, 72,
+ 72, 72, 72, 72, 72, 72, 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, 68, 1, 68, 1, 70, 1, 64,
- 1, 71, 71, 71, 71, 71, 71, 71,
- 71, 71, 71, 1, 64, 1, 61, 1,
- 72, 72, 72, 72, 72, 72, 72, 72,
- 72, 72, 1, 61, 1, 55, 1, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 57, 1, 1, 1, 1, 1, 1,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 1, 1, 1, 1, 59, 1,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 1, 55, 1, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 57,
- 1, 1, 1, 1, 1, 1, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 1, 1, 1, 1, 59, 1, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 1, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 57, 1, 1, 1, 1,
- 1, 1, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 1, 1, 1, 1,
- 59, 1, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 1, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 1,
- 1, 1, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 1, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 1, 1,
- 68, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 1, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 1, 1, 1,
- 1, 1, 1, 1, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 1, 1,
- 1, 1, 59, 1, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 58, 58, 1, 75,
- 75, 76, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
+ 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, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 77, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 1, 78,
- 1, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 1, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 1, 1, 1, 1, 1,
- 1, 1, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 1, 1, 1, 1,
- 1, 1, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 1, 80, 1, 42,
- 1, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 81, 1, 1, 1, 1,
- 1, 1, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 1, 1, 1, 1,
- 82, 1, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 1, 42, 1, 39,
- 40, 39, 39, 39, 39, 39, 1, 1,
- 39, 39, 1, 1, 1, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 1, 1, 1, 39, 1, 39, 1, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 1, 1, 1, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 1, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 1, 1, 1, 1, 1, 1, 1, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 1, 1, 1, 1, 82, 1, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 1, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 1, 1, 1, 1,
- 1, 1, 1, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 1, 1, 1,
- 1, 1, 1, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 1, 84, 1,
- 5, 1, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 85, 1, 1, 1,
- 1, 1, 1, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 1, 1, 1,
- 1, 86, 1, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 1, 5, 1,
- 2, 3, 2, 2, 2, 2, 2, 1,
- 1, 2, 2, 1, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 2, 1, 2, 1,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 1, 1, 1, 1, 1, 1, 1,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 1, 1, 1, 1, 86, 1,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 1, 87, 87, 87, 87, 87,
+ 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,
+ 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, 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, 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, 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,
+ 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, 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,
+ 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, 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,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 87, 1, 1, 1, 1, 1,
+ 1, 1, 99, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 88, 1, 11, 11, 11, 11, 11, 11,
+ 100, 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,
@@ -541,50 +565,54 @@ 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, 89, 89,
- 89, 89, 89, 1, 1, 1, 1, 1,
+ 11, 11, 11, 11, 11, 1, 101, 101,
+ 101, 101, 101, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 89, 1, 90,
- 90, 90, 90, 90, 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, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 90, 1,
- 91, 91, 91, 91, 91, 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, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 91,
- 1, 92, 92, 92, 92, 92, 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, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 92, 1, 0
+ 104, 1, 0
};
static const char _smtp_addr_parser_trans_targs[] = {
- 1, 0, 2, 27, 30, 66, 2, 3,
- 4, 71, 7, 71, 6, 8, 23, 26,
+ 1, 0, 2, 27, 31, 68, 2, 3,
+ 4, 73, 7, 73, 6, 8, 23, 26,
9, 21, 24, 23, 26, 10, 11, 19,
- 12, 13, 17, 14, 15, 73, 16, 18,
- 20, 22, 25, 27, 28, 29, 4, 31,
- 58, 75, 61, 31, 32, 33, 34, 37,
- 35, 34, 74, 36, 38, 54, 57, 39,
- 52, 55, 54, 57, 40, 41, 50, 42,
- 43, 48, 44, 45, 47, 46, 74, 49,
- 51, 53, 56, 58, 59, 60, 33, 62,
- 63, 64, 65, 67, 68, 69, 70, 72,
- 5, 72, 72, 72, 72
+ 12, 13, 17, 14, 15, 75, 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
};
static const char _smtp_addr_parser_trans_actions[] = {
- 0, 0, 1, 1, 0, 0, 0, 0,
- 2, 3, 0, 0, 0, 4, 4, 4,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 5, 0, 0,
- 0, 0, 0, 0, 0, 0, 6, 1,
- 1, 0, 0, 0, 0, 2, 3, 0,
- 0, 0, 7, 0, 4, 4, 4, 0,
+ 0, 0, 1, 2, 0, 2, 0, 0,
+ 3, 4, 0, 0, 0, 5, 5, 5,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 5, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 6, 0,
- 0, 0, 0, 0, 0, 0, 0, 8,
- 0, 0, 9, 10, 11
+ 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, 0, 7, 0, 0, 0, 0, 0,
+ 0, 7, 0, 14, 0, 0, 15, 16,
+ 17
};
static const char _smtp_addr_parser_eof_actions[] = {
@@ -596,18 +624,18 @@ 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, 0, 0, 0, 0, 0, 0, 8,
- 0, 9, 10, 11
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 14, 0, 15, 16, 17
};
static const int smtp_addr_parser_start = 1;
-static const int smtp_addr_parser_first_final = 71;
+static const int smtp_addr_parser_first_final = 73;
static const int smtp_addr_parser_error = 0;
static const int smtp_addr_parser_en_main = 1;
-#line 60 "src/ragel/smtp_addr_parser.rl"
+#line 79 "src/ragel/smtp_addr_parser.rl"
static int
rspamd_smtp_addr_parse (const char *data, size_t len, struct rspamd_email_address *addr)
@@ -622,14 +650,14 @@ rspamd_smtp_addr_parse (const char *data, size_t len, struct rspamd_email_addres
eof = pe;
-#line 626 "src/libmime/parsers/smtp_addr_parser.c"
+#line 654 "src/libmime/parsers/smtp_addr_parser.c"
{
cs = smtp_addr_parser_start;
}
-#line 74 "src/ragel/smtp_addr_parser.rl"
+#line 93 "src/ragel/smtp_addr_parser.rl"
-#line 633 "src/libmime/parsers/smtp_addr_parser.c"
+#line 661 "src/libmime/parsers/smtp_addr_parser.c"
{
int _slen;
int _trans;
@@ -654,44 +682,35 @@ _resume:
goto _again;
switch ( _smtp_addr_parser_trans_actions[_trans] ) {
- case 1:
+ case 7:
#line 5 "src/ragel/smtp_addr_parser.rl"
{
addr->user = p;
- addr->addr = p;
}
break;
- case 2:
-#line 10 "src/ragel/smtp_addr_parser.rl"
+ case 3:
+#line 9 "src/ragel/smtp_addr_parser.rl"
{
if (addr->user) {
addr->user_len = p - addr->user;
}
}
break;
- case 3:
-#line 16 "src/ragel/smtp_addr_parser.rl"
+ case 4:
+#line 15 "src/ragel/smtp_addr_parser.rl"
{
addr->domain = p;
}
break;
- case 7:
-#line 20 "src/ragel/smtp_addr_parser.rl"
- {
- if (addr->domain) {
- addr->domain_len = p - addr->domain;
- }
- }
- break;
- case 4:
-#line 26 "src/ragel/smtp_addr_parser.rl"
+ case 5:
+#line 25 "src/ragel/smtp_addr_parser.rl"
{
addr->domain = p;
addr->flags |= RSPAMD_EMAIL_ADDR_IP;
}
break;
- case 5:
-#line 31 "src/ragel/smtp_addr_parser.rl"
+ case 6:
+#line 30 "src/ragel/smtp_addr_parser.rl"
{
if (addr->domain) {
addr->domain_len = p - addr->domain;
@@ -699,57 +718,131 @@ _resume:
}
break;
case 9:
-#line 46 "src/ragel/smtp_addr_parser.rl"
+#line 36 "src/ragel/smtp_addr_parser.rl"
+ {
+ addr->flags |= RSPAMD_EMAIL_ADDR_QUOTED;
+ }
+ break;
+ case 16:
+#line 47 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
- case 8:
-#line 20 "src/ragel/smtp_addr_parser.rl"
+ case 11:
+#line 51 "src/ragel/smtp_addr_parser.rl"
{
- if (addr->domain) {
- addr->domain_len = p - addr->domain;
- }
+ addr->addr = p;
}
-#line 46 "src/ragel/smtp_addr_parser.rl"
+ break;
+ case 2:
+#line 55 "src/ragel/smtp_addr_parser.rl"
{
- addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
+ addr->addr = p;
}
break;
- case 6:
-#line 37 "src/ragel/smtp_addr_parser.rl"
+ case 13:
+#line 59 "src/ragel/smtp_addr_parser.rl"
{
- addr->flags |= RSPAMD_EMAIL_ADDR_QUOTED;
+ addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
+ if (addr->addr) {
+ addr->addr_len = p - addr->addr;
+ }
}
-#line 10 "src/ragel/smtp_addr_parser.rl"
+ break;
+ case 8:
+#line 5 "src/ragel/smtp_addr_parser.rl"
+ {
+ addr->user = p;
+ }
+#line 9 "src/ragel/smtp_addr_parser.rl"
{
if (addr->user) {
addr->user_len = p - addr->user;
}
}
break;
- case 11:
-#line 41 "src/ragel/smtp_addr_parser.rl"
+ case 12:
+#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"
+ {
+ addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
+ if (addr->addr) {
+ addr->addr_len = p - addr->addr;
+ }
+ }
+ break;
+ case 17:
+#line 40 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_EMPTY;
addr->addr = "";
+ addr->user = addr->addr;
+ addr->domain = addr->addr;
}
-#line 46 "src/ragel/smtp_addr_parser.rl"
+#line 47 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
case 10:
-#line 50 "src/ragel/smtp_addr_parser.rl"
+#line 51 "src/ragel/smtp_addr_parser.rl"
+ {
+ addr->addr = p;
+ }
+#line 5 "src/ragel/smtp_addr_parser.rl"
+ {
+ addr->user = p;
+ }
+ break;
+ case 1:
+#line 55 "src/ragel/smtp_addr_parser.rl"
+ {
+ addr->addr = p;
+ }
+#line 5 "src/ragel/smtp_addr_parser.rl"
+ {
+ addr->user = p;
+ }
+ break;
+ case 15:
+#line 66 "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"
+ {
+ addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
+ }
+ break;
+ case 14:
+#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"
{
addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
+ if (addr->addr) {
+ addr->addr_len = p - addr->addr;
+ }
}
-#line 46 "src/ragel/smtp_addr_parser.rl"
+#line 47 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
-#line 753 "src/libmime/parsers/smtp_addr_parser.c"
+#line 846 "src/libmime/parsers/smtp_addr_parser.c"
}
_again:
@@ -761,53 +854,65 @@ _again:
if ( p == eof )
{
switch ( _smtp_addr_parser_eof_actions[cs] ) {
- case 9:
-#line 46 "src/ragel/smtp_addr_parser.rl"
+ case 16:
+#line 47 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
- case 8:
-#line 20 "src/ragel/smtp_addr_parser.rl"
+ case 17:
+#line 40 "src/ragel/smtp_addr_parser.rl"
{
- if (addr->domain) {
- addr->domain_len = p - addr->domain;
- }
+ addr->flags |= RSPAMD_EMAIL_ADDR_EMPTY;
+ addr->addr = "";
+ addr->user = addr->addr;
+ addr->domain = addr->addr;
}
-#line 46 "src/ragel/smtp_addr_parser.rl"
+#line 47 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
- case 11:
-#line 41 "src/ragel/smtp_addr_parser.rl"
+ case 15:
+#line 66 "src/ragel/smtp_addr_parser.rl"
{
- addr->flags |= RSPAMD_EMAIL_ADDR_EMPTY;
- addr->addr = "";
+ addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
+ if (addr->addr) {
+ addr->addr_len = p - addr->addr;
+ }
}
-#line 46 "src/ragel/smtp_addr_parser.rl"
+#line 47 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
- case 10:
-#line 50 "src/ragel/smtp_addr_parser.rl"
+ case 14:
+#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"
{
addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
+ if (addr->addr) {
+ addr->addr_len = p - addr->addr;
+ }
}
-#line 46 "src/ragel/smtp_addr_parser.rl"
+#line 47 "src/ragel/smtp_addr_parser.rl"
{
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
break;
-#line 804 "src/libmime/parsers/smtp_addr_parser.c"
+#line 909 "src/libmime/parsers/smtp_addr_parser.c"
}
}
_out: {}
}
-#line 75 "src/ragel/smtp_addr_parser.rl"
+#line 94 "src/ragel/smtp_addr_parser.rl"
return cs;
}
diff --git a/src/ragel/smtp_addr_parser.rl b/src/ragel/smtp_addr_parser.rl
index 5d08d7d4f..64e1ae4fb 100644
--- a/src/ragel/smtp_addr_parser.rl
+++ b/src/ragel/smtp_addr_parser.rl
@@ -4,7 +4,6 @@
action User_start {
addr->user = p;
- addr->addr = p;
}
action User_end {
@@ -41,14 +40,34 @@
action Empty_addr {
addr->flags |= RSPAMD_EMAIL_ADDR_EMPTY;
addr->addr = "";
+ addr->user = addr->addr;
+ addr->domain = addr->addr;
}
action Valid_addr {
addr->flags |= RSPAMD_EMAIL_ADDR_VALID;
}
- action Angled_addr {
+ action Angled_addr_start {
+ addr->addr = p;
+ }
+
+ action Unangled_addr_start {
+ addr->addr = p;
+ }
+
+ action Angled_addr_end {
+ addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
+ if (addr->addr) {
+ addr->addr_len = p - addr->addr;
+ }
+ }
+
+ action Unangled_addr_end {
addr->flags |= RSPAMD_EMAIL_ADDR_BRACED;
+ if (addr->addr) {
+ addr->addr_len = p - addr->addr;
+ }
}
include smtp_address "smtp_address.rl";
diff --git a/src/ragel/smtp_address.rl b/src/ragel/smtp_address.rl
index c0333acd9..3c2a86ee6 100644
--- a/src/ragel/smtp_address.rl
+++ b/src/ragel/smtp_address.rl
@@ -25,8 +25,8 @@
Dot_string = Atom ("." Atom)*;
QcontentSMTP = qtextSMTP | quoted_pairSMTP;
- Quoted_string = ( DQUOTE QcontentSMTP* DQUOTE ) %Quoted_addr;
- Local_part = ( Dot_string | Quoted_string ) >User_start %User_end;
+ Quoted_string = ( DQUOTE QcontentSMTP* >User_start %User_end DQUOTE ) %Quoted_addr;
+ Local_part = Dot_string >User_start %User_end | Quoted_string;
String = Atom | Quoted_string;
Standardized_tag = Ldh_str;
@@ -43,8 +43,8 @@
Mailbox = Local_part "@" (address_literal | Domain >Domain_start %Domain_end);
UnangledPath = ( Adl ":" )? Mailbox;
- AngledPath = "<" UnangledPath ">";
- Path = AngledPath %Angled_addr | UnangledPath;
+ AngledPath = "<" UnangledPath >Angled_addr_start %Angled_addr_end ">";
+ Path = AngledPath | UnangledPath >Unangled_addr_start %Unangled_addr_end;
SMTPAddr = space* (Path | "<>" %Empty_addr ) %Valid_addr space*;
}%%