Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b26cb6d

Browse files
committed
[HttpKernel] added RequestDataCollector::onKernelResponse()
fixes redirection profile introduced in 0a1b284. Prevents collecting redirect data on sub request profiling.
1 parent c8ba3b2 commit b26cb6d

File tree

2 files changed

+33
-14
lines changed

2 files changed

+33
-14
lines changed

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ CHANGELOG
77
* Added `Controller::json` to simplify creating JSON responses when using the Serializer component
88
* Deprecated absolute template paths support in the template name parser
99
* Deprecated using core form types without dependencies as services
10+
* Added `Symfony\Component\HttpHernel\DataCollector\RequestDataCollector::onKernelResponse()`
1011
* Added `Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector`
1112
* Deprecated service `serializer.mapping.cache.apc` (use `serializer.mapping.cache.doctrine.apc` instead)
1213

src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Symfony\Component\HttpFoundation\Request;
1717
use Symfony\Component\HttpFoundation\Response;
1818
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
19+
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
1920
use Symfony\Component\HttpKernel\KernelEvents;
2021
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
2122
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
@@ -128,20 +129,23 @@ public function collect(Request $request, Response $response, \Exception $except
128129
unset($this->controllers[$request]);
129130
}
130131

131-
if ($request->hasSession() && $request->getSession()->has('sf_redirect')) {
132-
$this->data['redirect'] = $request->getSession()->get('sf_redirect');
133-
$request->getSession()->remove('sf_redirect');
134-
}
132+
if (isset($session)) {
133+
if ($session->has('sf_redirected')) {
134+
$this->data['redirect'] = $session->get('sf_redirect');
135+
$session->remove('sf_redirect');
136+
$session->remove('sf_redirected');
137+
}
135138

136-
if ($request->hasSession() && $response->isRedirect()) {
137-
$request->getSession()->set('sf_redirect', array(
138-
'token' => $response->headers->get('x-debug-token'),
139-
'route' => $request->attributes->get('_route', 'n/a'),
140-
'method' => $request->getMethod(),
141-
'controller' => $this->parseController($request->attributes->get('_controller')),
142-
'status_code' => $statusCode,
143-
'status_text' => Response::$statusTexts[(int) $statusCode],
144-
));
139+
if ($response->isRedirect()) {
140+
$session->set('sf_redirect', array(
141+
'token' => $response->headers->get('x-debug-token'),
142+
'route' => $request->attributes->get('_route', 'n/a'),
143+
'method' => $request->getMethod(),
144+
'controller' => $this->parseController($request->attributes->get('_controller')),
145+
'status_code' => $statusCode,
146+
'status_text' => Response::$statusTexts[(int) $statusCode],
147+
));
148+
}
145149
}
146150
}
147151

@@ -286,9 +290,23 @@ public function onKernelController(FilterControllerEvent $event)
286290
$this->controllers[$event->getRequest()] = $event->getController();
287291
}
288292

293+
public function onKernelResponse(FilterResponseEvent $event)
294+
{
295+
if (!$event->isMasterRequest() || !$event->getRequest()->hasSession()) {
296+
return;
297+
}
298+
299+
if ($event->getRequest()->getSession()->has('sf_redirect')) {
300+
$event->getRequest()->getSession()->set('sf_redirected', true);
301+
}
302+
}
303+
289304
public static function getSubscribedEvents()
290305
{
291-
return array(KernelEvents::CONTROLLER => 'onKernelController');
306+
return array(
307+
KernelEvents::CONTROLLER => 'onKernelController',
308+
KernelEvents::RESPONSE => 'onKernelResponse',
309+
);
292310
}
293311

294312
/**

0 commit comments

Comments
 (0)