From eebd4476fc9bba486068df1da5ef118e7a57439a Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 17 May 2012 04:48:18 -0400
Subject: [PATCH] s/rcube_charset_convert/rcube_charset::convert/
---
program/include/rcube_session.php | 29 +++++++++++++++++------------
1 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/program/include/rcube_session.php b/program/include/rcube_session.php
index f26989d..e024b0e 100644
--- a/program/include/rcube_session.php
+++ b/program/include/rcube_session.php
@@ -43,7 +43,6 @@
private $vars = false;
private $key;
private $now;
- private $prev;
private $secret = '';
private $ip_check = false;
private $logging = false;
@@ -65,7 +64,7 @@
// use memcache backend
if ($config->get('session_storage', 'db') == 'memcache') {
- $this->memcache = rcmail::get_instance()->get_memcache();
+ $this->memcache = rcube::get_instance()->get_memcache();
// set custom functions for PHP session management if memcache is available
if ($this->memcache) {
@@ -519,7 +518,6 @@
// valid time range is now - 1/2 lifetime to now + 1/2 lifetime
$now = time();
$this->now = $now - ($now % ($this->lifetime / 2));
- $this->prev = $this->now - ($this->lifetime / 2);
}
/**
@@ -590,15 +588,22 @@
$this->log("IP check failed for " . $this->key . "; expected " . $this->ip . "; got " . $_SERVER['REMOTE_ADDR']);
if ($result && $this->_mkcookie($this->now) != $this->cookie) {
- // Check if using id from previous time slot
- if ($this->_mkcookie($this->prev) == $this->cookie) {
- $this->set_auth_cookie();
+ $this->log("Session auth check failed for " . $this->key . "; timeslot = " . date('Y-m-d H:i:s', $this->now));
+ $result = false;
+
+ // Check if using id from a previous time slot
+ for ($i = 1; $i <= 2; $i++) {
+ $prev = $this->now - ($this->lifetime / 2) * $i;
+ if ($this->_mkcookie($prev) == $this->cookie) {
+ $this->log("Send new auth cookie for " . $this->key . ": " . $this->cookie);
+ $this->set_auth_cookie();
+ $result = true;
+ }
}
- else {
- $result = false;
- $this->log("Session authentication failed for " . $this->key . "; invalid auth cookie sent");
- }
- }
+ }
+
+ if (!$result)
+ $this->log("Session authentication failed for " . $this->key . "; invalid auth cookie sent; timeslot = " . date('Y-m-d H:i:s', $prev));
return $result;
}
@@ -632,7 +637,7 @@
function log($line)
{
if ($this->logging)
- rcmail::write_log('session', $line);
+ rcube::write_log('session', $line);
}
}
--
Gitblit v1.9.1