summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2010-10-04 07:03:00 +0000
committeralecpl <alec@alec.pl>2010-10-04 07:03:00 +0000
commitf1adbf17eeaefa0f9977f18de9f085d25368c660 (patch)
tree1ddde54ed0f8b57f7145c201e4575fbd2ada734a
parentdf2188d778cb9bd89ca118c03850ef7f9fc86ce7 (diff)
- Convert IDN to ASCII before using rcube_user::query()
- Always convert to lower case a username when it's an email address
-rw-r--r--program/include/rcmail.php17
1 files changed, 10 insertions, 7 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 1b11ca3c5..30b79e26a 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -683,6 +683,15 @@ class rcmail
if ($virtuser = rcube_user::email2user($username))
$username = $virtuser;
+ // Here we need IDNA ASCII
+ // Only rcube_contacts class is using domain names in Unicode
+ $host = idn_to_ascii($host);
+ if (strpos($username, '@')) {
+ // lowercase username if it's an e-mail address (#1484473)
+ $username = mb_strtolower($username);
+ $username = idn_to_ascii($username);
+ }
+
// user already registered -> overwrite username
if ($user = rcube_user::query($username, $host))
$username = $user->data['username'];
@@ -690,15 +699,9 @@ class rcmail
if (!$this->imap)
$this->imap_init();
- // Here we need IDNA ASCII
- // Only rcube_contacts class is using domain names in Unicode
- $host = idn_to_ascii($host);
- if (strpos($username, '@'))
- $username = idn_to_ascii($username);
-
// try IMAP login
if (!($imap_login = $this->imap->connect($host, $username, $pass, $imap_port, $imap_ssl))) {
- // lowercase username if it's an e-mail address (#1484473)
+ // try with lowercase
$username_lc = mb_strtolower($username);
if ($username_lc != $username && ($imap_login = $this->imap->connect($host, $username_lc, $pass, $imap_port, $imap_ssl)))
$username = $username_lc;