diff options
Diffstat (limited to 'realrcptto.c')
| -rw-r--r-- | realrcptto.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/realrcptto.c b/realrcptto.c index 5ae9684..8f4d50e 100644 --- a/realrcptto.c +++ b/realrcptto.c | |||
| @@ -269,7 +269,7 @@ int depth; | |||
| 269 | && extension && !str_diffn(extension, "mailbox-", 8)) | 269 | && extension && !str_diffn(extension, "mailbox-", 8)) |
| 270 | username = extension + 8; | 270 | username = extension + 8; |
| 271 | 271 | ||
| 272 | /* remove plus-addressing */ | 272 | /* remove sub-addressing */ |
| 273 | username[str_chr(username, '+')] = '\0'; | 273 | username[str_chr(username, '+')] = '\0'; |
| 274 | 274 | ||
| 275 | env_put2("DTUSER", username); | 275 | env_put2("DTUSER", username); |
| @@ -316,6 +316,13 @@ int depth; | |||
| 316 | if (constmap(&maplocals,localpart.s + at + 1,localpart.len - at - 1)) { | 316 | if (constmap(&maplocals,localpart.s + at + 1,localpart.len - at - 1)) { |
| 317 | localpart.len = at; | 317 | localpart.len = at; |
| 318 | localpart.s[at] = '\0'; | 318 | localpart.s[at] = '\0'; |
| 319 | /* sub-addressing for local domains */ | ||
| 320 | for (i = 1; i < localpart.len - 1; ++i) { | ||
| 321 | if (localpart.s[i] == '+') { | ||
| 322 | localpart.s[i] = '-'; | ||
| 323 | break; | ||
| 324 | } | ||
| 325 | } | ||
| 319 | } else { | 326 | } else { |
| 320 | unsigned int xlen,newlen; | 327 | unsigned int xlen,newlen; |
| 321 | char *x; | 328 | char *x; |
