8000 Merge branch '2.7' into 2.8 · symfony/symfony@77053e7 · GitHub
[go: up one dir, main page]

Skip to content

Commit 77053e7

Browse files
Merge branch '2.7' into 2.8
* 2.7: [HttpKernel] Inline ValidateRequestListener logic into HttpKernel fixed HttpKernel dependencies after #18688 Conflicts: src/Symfony/Component/HttpKernel/composer.json
2 parents 0a7aa63 + 692740b commit 77053e7

File tree

6 files changed

+37
-128
lines changed

6 files changed

+37
-128
lines changed

src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,5 @@
4646
<argument type="service" id="request_stack" />
4747
<tag name="kernel.event_subscriber" />
4848
</service>
49-
50-
<service id="validate_request_listener" class="Symfony\Component\HttpKernel\EventListener\ValidateRequestListener">
51-
<tag name="kernel.event_subscriber" />
52-
</service>
5349
</services>
5450
</container>

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

Lines changed: 0 additions & 56 deletions
This file was deleted.

src/Symfony/Component/HttpKernel/HttpKernel.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Component\HttpKernel;
1313

1414
use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
15+
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
1516
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
1617
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
1718
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
@@ -21,6 +22,7 @@
2122
use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
2223
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
2324
use Symfony\Component\HttpKernel\Event\PostResponseEvent;
25+
use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException;
2426
use Symfony\Component\HttpFoundation\Request;
2527
use Symfony\Component\HttpFoundation\RequestStack;
2628
use Symfony\Component\HttpFoundation\Response;
@@ -113,6 +115,13 @@ public function terminateWithException(\Exception $exception)
113115
*/
114116
private function handleRaw(Request $request, $type = self::MASTER_REQUEST)
115117
{
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+
}
116125
$this->requestStack->push($request);
117126

118127
// request

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

Lines changed: 0 additions & 67 deletions
This file was deleted.

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,33 @@ public function testVerifyRequestStackPushPopDuringHandle()
271271
$kernel->handle($request, HttpKernelInterface::MASTER_REQUEST);
272272
}
273273

274+
/**
275+
* @expectedException Symfony\Component\HttpKernel\Exception\BadRequestHttpException
276+
*/
277+
public function testInconsistentClientIpsOnMasterRequests()
278+
{
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');
285+
286+
$kernel->handle($request, $kernel::MASTER_REQUEST, false);
287+
}
288+
289+
public function testInconsistentClientIpsOnSubRequests()
290+
{
291+
$kernel = new HttpKernel(new EventDispatcher(), $this->getResolver());
292+
$request = new Request();
293+
$request->setTrustedProxies(array('1.1.1.1'));
294+
$request->server->set('REMOTE_ADDR', '1.1.1.1');
295+
$request->headers->set('FORWARDED', '2.2.2.2');
296+
$request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
297+
298+
$this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $kernel->handle($request, $kernel::SUB_REQUEST, false));
299+
}
300+
274301
protected function getResolver($controller = null)
275302
{
276303
if (null === $controller) {

src/Symfony/Component/HttpKernel/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"require": {
1919
"php": ">=5.3.9",
2020
"symfony/event-dispatcher": "~2.6,>=2.6.7|~3.0.0",
21-
"symfony/http-foundation": "~2.5,>=2.5.4|~3.0.0",
21+
"symfony/http-foundation": "~2.8.8|~3.0.8",
2222
"symfony/debug": "~2.6,>=2.6.2",
2323
"psr/log": "~1.0"
2424
},

0 commit comments

Comments
 (0)
0