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

Skip to content

Commit 0de369a

Browse files
committed
Merge branch '2.1' into 2.2
* 2.1: [FrameworkBundle] tweaked reference dumper command (see #7093) [HttpKernel] added some tests for previous merge Fix REMOTE_ADDR for cached subrequests [Process] Warn user with a useful message when tmpfile() failed Conflicts: src/Symfony/Bundle/FrameworkBundle/Command/ConfigDumpReferenceCommand.php
2 parents 5bf6d7e + 75c6194 commit 0de369a

File tree

3 files changed

+24
-12
lines changed

3 files changed

+24
-12
lines changed

src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -418,18 +418,6 @@ protected function fetch(Request $request, $catch = false)
418418
$subRequest->headers->remove('if_modified_since');
419419
$subRequest->headers->remove('if_none_match');
420420

421-
// modify the X-Forwarded-For header if needed
422-
$forwardedFor = $subRequest->headers->get('X-Forwarded-For');
423-
if ($forwardedFor) {
424-
$subRequest->headers->set('X-Forwarded-For', $forwardedFor.', '.$subRequest->server->get('REMOTE_ADDR'));
425-
} else {
426-
$subRequest->headers->set('X-Forwarded-For', $subRequest->server->get('REMOTE_ADDR'));
427-
}
428-
429-
// fix the client IP address by setting it to 127.0.0.1 as HttpCache
430-
// is always called from the same process as the backend.
431-
$subRequest->server->set('REMOTE_ADDR', '127.0.0.1');
432-
433421
$response = $this->forward($subRequest, $catch);
434422

435423
if ($this->isPrivateRequest($request) && !$response->headers->hasCacheControlDirective('public')) {
@@ -460,6 +448,18 @@ protected function forward(Request $request, $catch = false, Response $entry = n
460448
$this->esi->addSurrogateEsiCapability($request);
461449
}
462450

451+
// modify the X-Forwarded-For header if needed
452+
$forwardedFor = $request->headers->get('X-Forwarded-For');
453+
if ($forwardedFor) {
454+
$request->headers->set('X-Forwarded-For', $forwardedFor.', '.$request->server->get('REMOTE_ADDR'));
455+
} else {
456+
$request->headers->set('X-Forwarded-For', $request->server->get('REMOTE_ADDR'));
457+
}
458+
459+
// fix the client IP address by setting it to 127.0.0.1 as HttpCache
460+
// is always called from the same process as the backend.
461+
$request->server->set('REMOTE_ADDR', '127.0.0.1');
462+
463463
// always a "master" request (as the real master request can be in cache)
464464
$response = $this->kernel->handle($request, HttpKernelInterface::MASTER_REQUEST, $catch);
465465
// FIXME: we probably need to also catch exceptions if raw === true

src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,4 +1066,13 @@ public function getXForwardedForData()
10661066
array('10.0.0.2, 10.0.0.3', '10.0.0.2, 10.0.0.3, 10.0.0.1'),
10671067
);
10681068
}
1069+
1070+
public function testXForwarderForHeaderForPassRequests()
1071+
{
1072+
$this->setNextResponse();
1073+
$server = array('REMOTE_ADDR' => '10.0.0.1');
1074+
$this->request('POST', '/', $server);
1075+
1076+
$this->assertEquals('10.0.0.1', $this->kernel->getBackendRequest()->headers->get('X-Forwarded-For'));
1077+
}
10691078
}

src/Symfony/Component/Process/Process.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,9 @@ public function start($callback = null)
232232
$this->fileHandles = array(
233233
self::STDOUT => tmpfile(),
234234
);
235+
if (false === $this->fileHandles[self::STDOUT]) {
236+
throw new RuntimeException('A temporary file could not be opened to write the process output to, verify that your TEMP environment variable is writable');
237+
}
235238
$this->readBytes = array(
236239
self::STDOUT => 0,
237240
);

0 commit comments

Comments
 (0)