From 257f88c695353067f595f79e3069f7976eef8811 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Tue, 24 Jun 2008 09:36:19 -0400
Subject: [PATCH] Really fix host selection from login form

---
 program/include/rcmail.php |   22 +++++++++++++++++-----
 1 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 057cabd..7f44748 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -474,12 +474,20 @@
   public function autoselect_host()
   {
     $default_host = $this->config->get('default_host');
-    $host = empty($default_host) ? get_input_value('_host', RCUBE_INPUT_POST) : $default_host;
+    $host = null;
     
-    if (is_array($host)) {
+    if (is_array($default_host)) {
+      $post_host = get_input_value('_host', RCUBE_INPUT_POST);
+      
+      // direct match in default_host array
+      if ($default_host[$post_host] || in_array($post_host, array_values($default_host))) {
+        $host = $post_host;
+      }
+      
+      // try to select host by mail domain
       list($user, $domain) = explode('@', get_input_value('_user', RCUBE_INPUT_POST));
       if (!empty($domain)) {
-        foreach ($host as $imap_host => $mail_domains) {
+        foreach ($default_host as $imap_host => $mail_domains) {
           if (is_array($mail_domains) && in_array($domain, $mail_domains)) {
             $host = $imap_host;
             break;
@@ -488,8 +496,12 @@
       }
 
       // take the first entry if $host is still an array
-      if (is_array($host))
-        $host = array_shift($host);
+      if (empty($host)) {
+        $host = array_shift($default_host);
+      }
+    }
+    else if (empty($default_host)) {
+      $host = get_input_value('_host', RCUBE_INPUT_POST);
     }
 
     return $host;

--
Gitblit v1.9.1