From 8b6eff6e69c2842cefbfe5ca384732c3ccd1305e Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Mon, 18 Oct 2010 08:55:07 -0400
Subject: [PATCH] - Add ACL extension support into IMAP classes (RFC4314)                                                                                           - Add ANNOTATEMORE extension support into IMAP classes (draft-daboo-imap-annotatemore)                                                            - Add METADATA extension support into IMAP classes (RFC5464)

---
 program/include/rcmail.php |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 1b11ca3..a26ad80 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -542,7 +542,7 @@
     if ($_SESSION['imap_host'] && !$this->imap->conn->connected()) {
       if (!$this->imap->connect($_SESSION['imap_host'], $_SESSION['username'], $this->decrypt($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl'])) {
         if ($this->output)
-          $this->output->show_message($this->imap->error_code == -1 ? 'imaperror' : 'sessionerror', 'error');
+          $this->output->show_message($this->imap->get_error_code() == -1 ? 'imaperror' : 'sessionerror', 'error');
       }
       else {
         $this->set_imap_prop();
@@ -683,6 +683,16 @@
       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 domain name
+      list($local, $domain) = explode('@', $username);
+      $username = $local . '@' . mb_strtolower($domain);
+      $username = idn_to_ascii($username);
+    }
+
     // user already registered -> overwrite username
     if ($user = rcube_user::query($username, $host))
       $username = $user->data['username'];
@@ -690,15 +700,9 @@
     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;

--
Gitblit v1.9.1