diff options
author | Aleksander Machniak <alec@alec.pl> | 2012-08-17 15:00:12 +0200 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2012-08-17 15:02:18 +0200 |
commit | 48a04205c8513fdc4f923fef556e3db8cc17d9f9 (patch) | |
tree | e18d753dc06c7a5c88208f91c58bf58b68a22f43 /program/include | |
parent | 0ae929ffff16f3156fe2750999093593a6e6a88f (diff) |
Fix bug where domain name was converted to lower-case even with login_lc=false (#1488593)
Conflicts:
CHANGELOG
program/include/rcmail.php
Diffstat (limited to 'program/include')
-rw-r--r-- | program/include/rcmail.php | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 9fdd33bf3..44a601635 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -899,7 +899,14 @@ class rcmail // Convert username to lowercase. If storage backend // is case-insensitive we need to store always the same username (#1487113) if ($config['login_lc']) { - $username = mb_strtolower($username); + if ($config['login_lc'] == 2 || $config['login_lc'] === true) { + $username = mb_strtolower($username); + } + else if (strpos($username, '@')) { + // lowercase domain name + list($local, $domain) = explode('@', $username); + $username = $local . '@' . mb_strtolower($domain); + } } // try to resolve email address from virtuser table @@ -909,17 +916,13 @@ class rcmail // Here we need IDNA ASCII // Only rcube_contacts class is using domain names in Unicode - $host = rcube_idn_to_ascii($host); - if (strpos($username, '@')) { - // lowercase domain name - list($local, $domain) = explode('@', $username); - $username = $local . '@' . mb_strtolower($domain); - $username = rcube_idn_to_ascii($username); - } + $host = rcube_idn_to_ascii($host); + $username = rcube_idn_to_ascii($username); // user already registered -> overwrite username - if ($user = rcube_user::query($username, $host)) + if ($user = rcube_user::query($username, $host)) { $username = $user->data['username']; + } if (!$this->storage) $this->storage_init(); |