summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Http/Session/SessionAuthenticationStrategy.php5
-rw-r--r--Http/Tests/Session/SessionAuthenticationStrategyTest.php17
2 files changed, 21 insertions, 1 deletions
diff --git a/Http/Session/SessionAuthenticationStrategy.php b/Http/Session/SessionAuthenticationStrategy.php
index dd258a0..ccfa6ba 100644
--- a/Http/Session/SessionAuthenticationStrategy.php
+++ b/Http/Session/SessionAuthenticationStrategy.php
@@ -47,7 +47,10 @@ class SessionAuthenticationStrategy implements SessionAuthenticationStrategyInte
return;
case self::MIGRATE:
- $request->getSession()->migrate(true);
+ // Destroying the old session is broken in php 5.4.0 - 5.4.10
+ // See php bug #63379
+ $destroy = PHP_VERSION_ID < 50400 || PHP_VERSION_ID >= 50411;
+ $request->getSession()->migrate($destroy);
return;
diff --git a/Http/Tests/Session/SessionAuthenticationStrategyTest.php b/Http/Tests/Session/SessionAuthenticationStrategyTest.php
index a1f960f..4aef4b2 100644
--- a/Http/Tests/Session/SessionAuthenticationStrategyTest.php
+++ b/Http/Tests/Session/SessionAuthenticationStrategyTest.php
@@ -39,6 +39,10 @@ class SessionAuthenticationStrategyTest extends \PHPUnit_Framework_TestCase
public function testSessionIsMigrated()
{
+ if (PHP_VERSION_ID >= 50400 && PHP_VERSION_ID < 50411) {
+ $this->markTestSkipped('We cannot destroy the old session on PHP 5.4.0 - 5.4.10.');
+ }
+
$session = $this->getMock('Symfony\Component\HttpFoundation\Session\SessionInterface');
$session->expects($this->once())->method('migrate')->with($this->equalTo(true));
@@ -46,6 +50,19 @@ class SessionAuthenticationStrategyTest extends \PHPUnit_Framework_TestCase
$strategy->onAuthentication($this->getRequest($session), $this->getToken());
}
+ public function testSessionIsMigratedWithPhp54Workaround()
+ {
+ if (PHP_VERSION_ID < 50400 || PHP_VERSION_ID >= 50411) {
+ $this->markTestSkipped('This PHP version is not affected.');
+ }
+
+ $session = $this->getMock('Symfony\Component\HttpFoundation\Session\SessionInterface');
+ $session->expects($this->once())->method('migrate')->with($this->equalTo(false));
+
+ $strategy = new SessionAuthenticationStrategy(SessionAuthenticationStrategy::MIGRATE);
+ $strategy->onAuthentication($this->getRequest($session), $this->getToken());
+ }
+
public function testSessionIsInvalidated()
{
$session = $this->getMock('Symfony\Component\HttpFoundation\Session\SessionInterface');