summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2012-08-17 15:00:12 +0200
committerAleksander Machniak <alec@alec.pl>2012-08-17 15:02:18 +0200
commit48a04205c8513fdc4f923fef556e3db8cc17d9f9 (patch)
treee18d753dc06c7a5c88208f91c58bf58b68a22f43 /program
parent0ae929ffff16f3156fe2750999093593a6e6a88f (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')
-rw-r--r--program/include/rcmail.php21
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();