Skip to content

Commit 1f00b55

Browse files
[HttpKernel] Move conflicting origin IPs handling to catch block
1 parent 3ef96b9 commit 1f00b55

File tree

2 files changed

+9
-19
lines changed

2 files changed

+9
-19
lines changed

src/Symfony/Component/HttpKernel/HttpKernel.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQ
6363
try {
6464
return $this->handleRaw($request, $type);
6565
} catch (\Exception $e) {
66+
if ($e instanceof ConflictingHeadersException) {
67+
$e = new BadRequestHttpException('The request headers contain conflicting information regarding the origin of this request.', $e);
68+
}
6669
if (false === $catch) {
6770
$this->finishRequest($request, $type);
6871

@@ -115,13 +118,6 @@ public function terminateWithException(\Exception $exception)
115118
*/
116119
private function handleRaw(Request $request, $type = self::MASTER_REQUEST)
117120
{
118-
if (self::MASTER_REQUEST === $type && $request::getTrustedProxies()) {
119-
try {
120-
$request->getClientIps();
121-
} catch (ConflictingHeadersException $e) {
122-
throw new BadRequestHttpException('The request headers contain conflicting information regarding the origin of this request.', $e);
123-
}
124-
}
125121
$this->requestStack->push($request);
126122

127123
// request

src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -276,26 +276,20 @@ public function testVerifyRequestStackPushPopDuringHandle()
276276
*/
277277
public function testInconsistentClientIpsOnMasterRequests()
278278
{
279-
$kernel = new HttpKernel(new EventDispatcher(), $this->getResolver());
280-
$request = new Request();
281-
$request->setTrustedProxies(array('1.1.1.1'));
282-
$request->server->set('REMOTE_ADDR', '1.1.1.1');
283-
$request->headers->set('FORWARDED', '2.2.2.2');
284-
$request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
279+
$dispatcher = new EventDispatcher();
280+
$dispatcher->addListener(KernelEvents::REQUEST, function ($event) {
281+
$event->getRequest()->getClientIp();
282+
});
285283

286-
$kernel->handle($request, $kernel::MASTER_REQUEST, false);
287-
}
284+
$kernel = new HttpKernel($dispatcher, $this->getResolver());
288285

289-
public function testInconsistentClientIpsOnSubRequests()
290-
{
291-
$kernel = new HttpKernel(new EventDispatcher(), $this->getResolver());
292286
$request = new Request();
293287
$request->setTrustedProxies(array('1.1.1.1'));
294288
$request->server->set('REMOTE_ADDR', '1.1.1.1');
295289
$request->headers->set('FORWARDED', '2.2.2.2');
296290
$request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
297291

298-
$this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $kernel->handle($request, $kernel::SUB_REQUEST, false));
292+
$kernel->handle($request, $kernel::MASTER_REQUEST, false);
299293
}
300294

301295
protected function getResolver($controller = null)

0 commit comments

Comments
 (0)