Skip to content

Commit d62ca37

Browse files
committed
Fix get session when the request stack is empty
1 parent 76647a7 commit d62ca37

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/Symfony/Component/HttpKernel/EventListener/SessionListener.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ protected function getSession()
4040

4141
if ($this->container->has('session_storage')
4242
&& ($storage = $this->container->get('session_storage')) instanceof NativeSessionStorage
43-
&& $this->container->get('request_stack')->getMasterRequest()->isSecure()
43+
&& ($masterRequest = $this->container->get('request_stack')->getMasterRequest())
44+
&& $masterRequest->isSecure()
4445
) {
4546
$storage->setOptions(['cookie_secure' => true]);
4647
}

src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php

+10
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
use Symfony\Component\DependencyInjection\Container;
1616
use Symfony\Component\DependencyInjection\ServiceLocator;
1717
use Symfony\Component\HttpFoundation\Request;
18+
use Symfony\Component\HttpFoundation\RequestStack;
1819
use Symfony\Component\HttpFoundation\Response;
1920
use Symfony\Component\HttpFoundation\Session\Session;
21+
use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
2022
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
2123
use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
2224
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
@@ -41,8 +43,16 @@ public function testSessionIsSet()
4143
{
4244
$session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
4345

46+
$requestStack = $this->getMockBuilder(RequestStack::class)->getMock();
47+
$requestStack->expects($this->once())->method('getMasterRequest')->willReturn(null);
48+
49+
$sessionStorage = $this->getMockBuilder(NativeSessionStorage::class)->getMock();
50+
$sessionStorage->expects($this->never())->method('setOptions')->with(['cookie_secure' => true]);
51+
4452
$container = new Container();
4553
$container->set('session', $session);
54+
$container->set('request_stack', $requestStack);
55+
$container->set('session_storage', $sessionStorage);
4656

4757
$request = new Request();
4858
$listener = new SessionListener($container);

0 commit comments

Comments
 (0)