Skip to content

Commit

Permalink
Fix #63379 - Don't reset mod_user_is_open in destroy
Browse files Browse the repository at this point in the history
The parent handler is still open so the reset here was in error.
  • Loading branch information
arraypad committed Dec 13, 2012
1 parent ef37055 commit 6566ea6
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 1 deletion.
1 change: 0 additions & 1 deletion ext/session/mod_user_class.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,6 @@ PHP_METHOD(SessionHandler, destroy)
return;
}

PS(mod_user_is_open) = 0;
RETVAL_BOOL(SUCCESS == PS(default_mod)->s_destroy(&PS(mod_data), key TSRMLS_CC));
}
/* }}} */
Expand Down
57 changes: 57 additions & 0 deletions ext/session/tests/bug63379.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
--TEST--
Bug #63379: Warning when using session_regenerate_id(TRUE) with a SessionHandler
--INI--
session.save_handler=files
session.name=PHPSESSID
--SKIPIF--
<?php include('skipif.inc'); ?>
--FILE--
<?php

ob_start();

$handler = new SessionHandler;
session_set_save_handler($handler);

session_start();

$_SESSION['foo'] = 'hello';
var_dump($_SESSION);

session_regenerate_id(true);

echo "*** Regenerated ***\n";
var_dump($_SESSION);

$_SESSION['bar'] = 'world';

var_dump($_SESSION);

session_write_close();
session_unset();

session_start();
var_dump($_SESSION);

--EXPECTF--
array(1) {
["foo"]=>
string(5) "hello"
}
*** Regenerated ***
array(1) {
["foo"]=>
string(5) "hello"
}
array(2) {
["foo"]=>
string(5) "hello"
["bar"]=>
string(5) "world"
}
array(2) {
["foo"]=>
string(5) "hello"
["bar"]=>
string(5) "world"
}
57 changes: 57 additions & 0 deletions ext/session/tests/bug63379_nodestroy.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
--TEST--
Bug #63379: Warning when using session_regenerate_id(TRUE) with a SessionHandler
--INI--
session.save_handler=files
session.name=PHPSESSID
--SKIPIF--
<?php include('skipif.inc'); ?>
--FILE--
<?php

ob_start();

$handler = new SessionHandler;
session_set_save_handler($handler);

session_start();

$_SESSION['foo'] = 'hello';
var_dump($_SESSION);

session_regenerate_id(false);

echo "*** Regenerated ***\n";
var_dump($_SESSION);

$_SESSION['bar'] = 'world';

var_dump($_SESSION);

session_write_close();
session_unset();

session_start();
var_dump($_SESSION);

--EXPECTF--
array(1) {
["foo"]=>
string(5) "hello"
}
*** Regenerated ***
array(1) {
["foo"]=>
string(5) "hello"
}
array(2) {
["foo"]=>
string(5) "hello"
["bar"]=>
string(5) "world"
}
array(2) {
["foo"]=>
string(5) "hello"
["bar"]=>
string(5) "world"
}

0 comments on commit 6566ea6

Please sign in to comment.