# HG changeset patch # User Timo Sirainen # Date 1296841709 -7200 # Node ID c34d871a7bb68454c00fddaff30a5d5be72676a3 # Parent 826981b2c5c430188de78000e21b4621763ff140 lmtp: Fixed handling recipient_delimiter when it was found from domain name. diff -r 826981b2c5c4 -r c34d871a7bb6 src/lmtp/commands.c --- a/src/lmtp/commands.c Wed Feb 02 23:58:32 2011 +0200 +++ b/src/lmtp/commands.c Fri Feb 04 19:48:29 2011 +0200 @@ -323,7 +323,7 @@ static void rcpt_address_parse(struct client *client, const char *address, const char **username_r, const char **detail_r) { - const char *p, *p2; + const char *p, *domain; *username_r = address; *detail_r = ""; @@ -331,16 +331,16 @@ if (*client->set->recipient_delimiter == '\0') return; + domain = strchr(address, '@'); p = strstr(address, client->set->recipient_delimiter); - if (p != NULL) { + if (p != NULL && (domain == NULL || p < domain)) { /* user+detail@domain */ *username_r = t_strdup_until(*username_r, p); - p2 = strchr(p, '@'); - if (p2 == NULL) + if (domain == NULL) *detail_r = p+1; else { - *detail_r = t_strdup_until(p+1, p2); - *username_r = t_strconcat(*username_r, p2, NULL); + *detail_r = t_strdup_until(p+1, domain); + *username_r = t_strconcat(*username_r, domain, NULL); } } }