summaryrefslogtreecommitdiff
path: root/program/include/main.inc
diff options
context:
space:
mode:
Diffstat (limited to 'program/include/main.inc')
-rw-r--r--program/include/main.inc49
1 files changed, 32 insertions, 17 deletions
diff --git a/program/include/main.inc b/program/include/main.inc
index b4b2aa9e8..4a872a580 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -51,6 +51,10 @@ function rcmail_startup($task='mail')
ini_set('display_errors', 1);
else
ini_set('display_errors', 0);
+
+ // set session garbage collecting time according to session_lifetime
+ if (!empty($CONFIG['session_lifetime']))
+ ini_set('session.gc_maxlifetime', ($CONFIG['session_lifetime']+2)*60);
// prepare DB connection
@@ -138,34 +142,43 @@ function rcmail_imap_init($connect=FALSE)
$IMAP = new rcube_imap();
+ // connect with stored session data
+ if ($connect)
+ {
+ if (!($conn = $IMAP->connect($_SESSION['imap_host'], $_SESSION['username'], decrypt_passwd($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl'])))
+ show_message('imaperror', 'error');
+
+ rcmail_set_imap_prop();
+ }
+
// enable caching of imap data
if ($CONFIG['enable_caching']===TRUE)
$IMAP->set_caching(TRUE);
- // set root dir from config
- if (strlen($CONFIG['imap_root']))
- $IMAP->set_rootdir($CONFIG['imap_root']);
-
if (is_array($CONFIG['default_imap_folders']))
$IMAP->set_default_mailboxes($CONFIG['default_imap_folders']);
- if (strlen($_SESSION['mbox']))
- $IMAP->set_mailbox($_SESSION['mbox']);
-
- if (isset($_SESSION['page']))
- $IMAP->set_page($_SESSION['page']);
-
// set pagesize from config
if (isset($CONFIG['pagesize']))
$IMAP->set_pagesize($CONFIG['pagesize']);
+ }
- // connect with stored session data
- if ($connect)
- {
- if (!($conn = $IMAP->connect($_SESSION['imap_host'], $_SESSION['username'], decrypt_passwd($_SESSION['password']))))
- show_message('imaperror', 'error');
- }
+// set root dir and last stored mailbox
+// this must be done AFTER connecting to the server
+function rcmail_set_imap_prop()
+ {
+ global $CONFIG, $IMAP;
+
+ // set root dir from config
+ if (strlen($CONFIG['imap_root']))
+ $IMAP->set_rootdir($CONFIG['imap_root']);
+
+ if (strlen($_SESSION['mbox']))
+ $IMAP->set_mailbox($_SESSION['mbox']);
+
+ if (isset($_SESSION['page']))
+ $IMAP->set_page($_SESSION['page']);
}
@@ -262,7 +275,7 @@ function rcmail_login($user, $pass, $host=NULL)
{
$host = $a_host['host'];
$imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? TRUE : FALSE;
- $imap_port = isset($a_host['post']) ? $a_host['post'] : ($imap_ssl ? 993 : $CONFIG['default_port']);
+ $imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : $CONFIG['default_port']);
}
// exit if IMAP login failed
@@ -301,6 +314,8 @@ function rcmail_login($user, $pass, $host=NULL)
{
$_SESSION['user_id'] = $user_id;
$_SESSION['imap_host'] = $host;
+ $_SESSION['imap_port'] = $imap_port;
+ $_SESSION['imap_ssl'] = $imap_ssl;
$_SESSION['username'] = $user;
$_SESSION['password'] = encrypt_passwd($pass);