File tree 2 files changed +28
-1
lines changed
Filter options
src/Symfony/Component/HttpKernel
2 files changed +28
-1
lines changed
Original file line number Diff line number Diff line change @@ -112,7 +112,17 @@ public function terminateWithException(\Throwable $exception, Request $request =
112
112
throw $ exception ;
113
113
}
114
114
115
- $ response = $ this ->handleThrowable ($ exception , $ request , self ::MASTER_REQUEST );
115
+ if ($ pop = $ request !== $ this ->requestStack ->getMasterRequest ()) {
116
+ $ this ->requestStack ->push ($ request );
117
+ }
118
+
119
+ try {
120
+ $ response = $ this ->handleThrowable ($ exception , $ request , self ::MASTER_REQUEST );
121
+ } finally {
122
+ if ($ pop ) {
123
+ $ this ->requestStack ->pop ();
124
+ }
125
+ }
116
126
117
127
$ response ->sendHeaders ();
118
128
$ response ->sendContent ();
Original file line number Diff line number Diff line change 20
20
use Symfony \Component \HttpFoundation \Response ;
21
21
use Symfony \Component \HttpKernel \Controller \ArgumentResolverInterface ;
22
22
use Symfony \Component \HttpKernel \Controller \ControllerResolverInterface ;
23
+ use Symfony \Component \HttpKernel \Event \ExceptionEvent ;
23
24
use Symfony \Component \HttpKernel \Exception \AccessDeniedHttpException ;
24
25
use Symfony \Component \HttpKernel \Exception \BadRequestHttpException ;
25
26
use Symfony \Component \HttpKernel \Exception \ControllerDoesNotReturnResponseException ;
@@ -340,6 +341,22 @@ public function testTerminate()
340
341
$ this ->assertEquals ($ response , $ capturedResponse );
341
342
}
342
343
344
+ public function testTerminateWithException ()
345
+ {
346
+ $ dispatcher = new EventDispatcher ();
347
+ $ requestStack = new RequestStack ();
348
+ $ kernel = $ this ->getHttpKernel ($ dispatcher , null , $ requestStack );
349
+
350
+ $ dispatcher ->addListener (KernelEvents::EXCEPTION , function (ExceptionEvent $ event ) use (&$ capturedRequest , $ requestStack ) {
351
+ $ capturedRequest = $ requestStack ->getCurrentRequest ();
352
+ $ event ->setResponse (new Response ());
353
+ });
354
+
355
+ $ kernel ->terminateWithException (new \Exception ('boo ' ), $ request = Request::create ('/ ' ));
356
+ $ this ->assertSame ($ request , $ capturedRequest );
357
+ $ this ->assertNull ($ requestStack ->getCurrentRequest ());
358
+ }
359
+
343
360
public function testVerifyRequestStackPushPopDuringHandle ()
344
361
{
345
362
$ request = new Request ();
You can’t perform that action at this time.
0 commit comments