Navigation Menu

Skip to content

Commit

Permalink
Set session.gc_maxlifetime by default.
Browse files Browse the repository at this point in the history
In the default case of using files for sessions, files could
be garbage collected earlier than expected based on other session
settings.  Always set session.gc_maxlifetime so session files are
garbage collected correctly.

Fixes #2901
  • Loading branch information
markstory committed May 24, 2012
1 parent aa85451 commit b27a3aa
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 0 deletions.
3 changes: 3 additions & 0 deletions lib/Cake/Model/Datasource/CakeSession.php
Expand Up @@ -470,6 +470,9 @@ protected static function _configureSession() {
if (!empty($sessionConfig['handler'])) {
$sessionConfig['ini']['session.save_handler'] = 'user';
}
if (!isset($sessionConfig['ini']['session.gc_maxlifetime'])) {
$sessionConfig['ini']['session.gc_maxlifetime'] = $sessionConfig['timeout'] * 60;
}

if (empty($_SESSION)) {
if (!empty($sessionConfig['ini']) && is_array($sessionConfig['ini'])) {
Expand Down
2 changes: 2 additions & 0 deletions lib/Cake/Test/Case/Model/Datasource/CakeSessionTest.php
Expand Up @@ -715,6 +715,8 @@ public function testCookieTimeoutFallback() {
TestCakeSession::start();
$this->assertEquals(400, Configure::read('Session.cookieTimeout'));
$this->assertEquals(400, Configure::read('Session.timeout'));
$this->assertEquals(400 * 60, ini_get('session.cookie_lifetime'));
$this->assertEquals(400 * 60, ini_get('session.gc_maxlifetime'));

$_SESSION = null;
Configure::write('Session', array(
Expand Down

0 comments on commit b27a3aa

Please sign in to comment.