summaryrefslogtreecommitdiffstats
path: root/src/ragel/smtp_addr_parser.rl
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 /src/ragel/smtp_addr_parser.rl
parent41219c6320a4c9744e5a051070fc78c1dd6403dd (diff)
downloadrspamd-dc5966e5907dc159452ebe86b4ac6d656f7c806d.tar.gz
rspamd-dc5966e5907dc159452ebe86b4ac6d656f7c806d.zip
[Fix] Fix SMTP address parsing machine
Diffstat (limited to 'src/ragel/smtp_addr_parser.rl')
-rw-r--r--src/ragel/smtp_addr_parser.rl23
1 files changed, 21 insertions, 2 deletions
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";