From 9e0c98908e202af91c92bb8694ce80d4a57b7379 Mon Sep 17 00:00:00 2001 From: alec Date: Tue, 8 Mar 2011 08:40:47 +0000 Subject: - Performance improvement: Remove redundant DELETE query (for old session deletion) on login git-svn-id: https://svn.roundcube.net/trunk@4599 208e9e7b-5314-0410-a742-e7e81cd9613c --- roundcubemail/CHANGELOG | 1 + roundcubemail/index.php | 6 ++++-- roundcubemail/program/include/rcube_session.php | 12 ++++++------ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/roundcubemail/CHANGELOG b/roundcubemail/CHANGELOG index 1336e96fd..8ea4aed53 100644 --- a/roundcubemail/CHANGELOG +++ b/roundcubemail/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- Remove redundant DELETE query (for old session deletion) on login - Get around unreliable rand() and mt_rand() in session ID generation (#1486281) - Fix some emails are not shown using Cyrus IMAP (#1487820) - Fix handling of mime-encoded words with non-integral number of octets in a word (#1487801) diff --git a/roundcubemail/index.php b/roundcubemail/index.php index 1b1522683..6ebc48e3d 100644 --- a/roundcubemail/index.php +++ b/roundcubemail/index.php @@ -98,7 +98,9 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') { $RCMAIL->login($auth['user'], $auth['pass'], $auth['host'])) { // create new session ID $RCMAIL->session->remove('temp'); - $RCMAIL->session->regenerate_id(); + // regenerate the session, don't destroy the current session + // it was destroyed already by $RCMAIL->kill_session() above + $RCMAIL->session->regenerate_id(false); // send auth cookie if necessary $RCMAIL->session->set_auth_cookie(); @@ -110,7 +112,7 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') { $query = array(); if ($url = get_input_value('_url', RCUBE_INPUT_POST)) { parse_str($url, $query); - + // prevent endless looping on login page if ($query['_task'] == 'login') unset($query['_task']); diff --git a/roundcubemail/program/include/rcube_session.php b/roundcubemail/program/include/rcube_session.php index 0fc444256..1fa331753 100644 --- a/roundcubemail/program/include/rcube_session.php +++ b/roundcubemail/program/include/rcube_session.php @@ -205,15 +205,15 @@ class rcube_session /** * Generate and set new session id + * + * @param boolean $destroy If enabled the current session will be destroyed */ - public function regenerate_id() + public function regenerate_id($destroy=true) { - // delete old session record - $this->destroy(session_id()); - $this->vars = false; + session_regenerate_id($destroy); - session_regenerate_id(false); - $this->key = session_id(); + $this->vars = false; + $this->key = session_id(); return true; } -- cgit v1.2.3