summaryrefslogtreecommitdiff
path: root/vendor/symfony
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@webtrees.net>2018-09-14 12:54:43 +0100
committerGreg Roach <fisharebest@webtrees.net>2018-09-14 12:54:43 +0100
commitf5666b293031c8b46bbeb0f4dad21baec37d2c0a (patch)
tree40f1c6cce58e04f453694693b84268de68e46baa /vendor/symfony
parentfbb7c24ea6b5eba4bded9beab647f831ac6850b5 (diff)
downloadwebtrees-f5666b293031c8b46bbeb0f4dad21baec37d2c0a.tar.gz
webtrees-f5666b293031c8b46bbeb0f4dad21baec37d2c0a.tar.bz2
webtrees-f5666b293031c8b46bbeb0f4dad21baec37d2c0a.zip
Update vendor code
Diffstat (limited to 'vendor/symfony')
-rw-r--r--vendor/symfony/cache/Tests/Adapter/MemcachedAdapterTest.php1
-rw-r--r--vendor/symfony/cache/Tests/Adapter/RedisClusterAdapterTest.php27
-rw-r--r--vendor/symfony/cache/Tests/Simple/RedisClusterCacheTest.php27
-rw-r--r--vendor/symfony/cache/Traits/MemcachedTrait.php1
-rw-r--r--vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt3
-rw-r--r--vendor/symfony/http-foundation/BinaryFileResponse.php4
-rw-r--r--vendor/symfony/http-foundation/Request.php21
-rw-r--r--vendor/symfony/http-foundation/Response.php1
-rw-r--r--vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php13
-rw-r--r--vendor/symfony/http-foundation/Tests/RequestTest.php57
-rw-r--r--vendor/symfony/http-foundation/Tests/ResponseTest.php5
-rw-r--r--vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php10
-rw-r--r--vendor/symfony/http-kernel/Kernel.php6
-rw-r--r--vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php11
14 files changed, 168 insertions, 19 deletions
diff --git a/vendor/symfony/cache/Tests/Adapter/MemcachedAdapterTest.php b/vendor/symfony/cache/Tests/Adapter/MemcachedAdapterTest.php
index 76e0608006..d1f8790340 100644
--- a/vendor/symfony/cache/Tests/Adapter/MemcachedAdapterTest.php
+++ b/vendor/symfony/cache/Tests/Adapter/MemcachedAdapterTest.php
@@ -89,6 +89,7 @@ class MemcachedAdapterTest extends AdapterTestCase
$this->assertTrue($client->getOption(\Memcached::OPT_COMPRESSION));
$this->assertSame(1, $client->getOption(\Memcached::OPT_BINARY_PROTOCOL));
+ $this->assertSame(1, $client->getOption(\Memcached::OPT_TCP_NODELAY));
$this->assertSame(1, $client->getOption(\Memcached::OPT_LIBKETAMA_COMPATIBLE));
}
diff --git a/vendor/symfony/cache/Tests/Adapter/RedisClusterAdapterTest.php b/vendor/symfony/cache/Tests/Adapter/RedisClusterAdapterTest.php
new file mode 100644
index 0000000000..852079c00c
--- /dev/null
+++ b/vendor/symfony/cache/Tests/Adapter/RedisClusterAdapterTest.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Tests\Adapter;
+
+class RedisClusterAdapterTest extends AbstractRedisAdapterTest
+{
+ public static function setupBeforeClass()
+ {
+ if (!class_exists('RedisCluster')) {
+ self::markTestSkipped('The RedisCluster class is required.');
+ }
+ if (!$hosts = getenv('REDIS_CLUSTER_HOSTS')) {
+ self::markTestSkipped('REDIS_CLUSTER_HOSTS env var is not defined.');
+ }
+
+ self::$redis = new \RedisCluster(null, explode(' ', $hosts));
+ }
+}
diff --git a/vendor/symfony/cache/Tests/Simple/RedisClusterCacheTest.php b/vendor/symfony/cache/Tests/Simple/RedisClusterCacheTest.php
new file mode 100644
index 0000000000..99d4e518fb
--- /dev/null
+++ b/vendor/symfony/cache/Tests/Simple/RedisClusterCacheTest.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Tests\Simple;
+
+class RedisClusterCacheTest extends AbstractRedisCacheTest
+{
+ public static function setupBeforeClass()
+ {
+ if (!class_exists('RedisCluster')) {
+ self::markTestSkipped('The RedisCluster class is required.');
+ }
+ if (!$hosts = getenv('REDIS_CLUSTER_HOSTS')) {
+ self::markTestSkipped('REDIS_CLUSTER_HOSTS env var is not defined.');
+ }
+
+ self::$redis = new \RedisCluster(null, explode(' ', $hosts));
+ }
+}
diff --git a/vendor/symfony/cache/Traits/MemcachedTrait.php b/vendor/symfony/cache/Traits/MemcachedTrait.php
index 7e36164293..5983d9ebd1 100644
--- a/vendor/symfony/cache/Traits/MemcachedTrait.php
+++ b/vendor/symfony/cache/Traits/MemcachedTrait.php
@@ -134,6 +134,7 @@ trait MemcachedTrait
$options = array_change_key_case($options, CASE_UPPER);
$client->setOption(\Memcached::OPT_BINARY_PROTOCOL, true);
$client->setOption(\Memcached::OPT_NO_BLOCK, true);
+ $client->setOption(\Memcached::OPT_TCP_NODELAY, true);
if (!array_key_exists('LIBKETAMA_COMPATIBLE', $options) && !array_key_exists(\Memcached::OPT_LIBKETAMA_COMPATIBLE, $options)) {
$client->setOption(\Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
}
diff --git a/vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt b/vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt
index 74cf2e9171..7211afbdf8 100644
--- a/vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt
+++ b/vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt
@@ -38,8 +38,7 @@ Did you forget a "use" statement for another namespace?"
["line":protected]=>
int(%d)
["trace":"Exception":private]=>
- array(0) {
- }
+ array(%d) {%A}
["previous":"Exception":private]=>
NULL
["severity":protected]=>
diff --git a/vendor/symfony/http-foundation/BinaryFileResponse.php b/vendor/symfony/http-foundation/BinaryFileResponse.php
index 01740f1766..ac620b28c0 100644
--- a/vendor/symfony/http-foundation/BinaryFileResponse.php
+++ b/vendor/symfony/http-foundation/BinaryFileResponse.php
@@ -31,8 +31,8 @@ class BinaryFileResponse extends Response
* @var File
*/
protected $file;
- protected $offset;
- protected $maxlen;
+ protected $offset = 0;
+ protected $maxlen = -1;
protected $deleteFileAfterSend = false;
/**
diff --git a/vendor/symfony/http-foundation/Request.php b/vendor/symfony/http-foundation/Request.php
index 4208f9a629..6ac23eed4d 100644
--- a/vendor/symfony/http-foundation/Request.php
+++ b/vendor/symfony/http-foundation/Request.php
@@ -2086,10 +2086,13 @@ class Request
if (self::$trustedHeaders[self::HEADER_FORWARDED] && $this->headers->has(self::$trustedHeaders[self::HEADER_FORWARDED])) {
$forwardedValues = $this->headers->get(self::$trustedHeaders[self::HEADER_FORWARDED]);
- $forwardedValues = preg_match_all(sprintf('{(?:%s)=(?:"?\[?)([a-zA-Z0-9\.:_\-/]*+)}', self::$forwardedParams[$type]), $forwardedValues, $matches) ? $matches[1] : array();
+ $forwardedValues = preg_match_all(sprintf('{(?:%s)="?([a-zA-Z0-9\.:_\-/\[\]]*+)}', self::$forwardedParams[$type]), $forwardedValues, $matches) ? $matches[1] : array();
if (self::HEADER_CLIENT_PORT === $type) {
foreach ($forwardedValues as $k => $v) {
- $forwardedValues[$k] = substr_replace($v, '0.0.0.0', 0, strrpos($v, ':'));
+ if (']' === substr($v, -1) || false === $v = strrchr($v, ':')) {
+ $v = $this->isSecure() ? ':443' : ':80';
+ }
+ $forwardedValues[$k] = '0.0.0.0'.$v;
}
}
}
@@ -2124,9 +2127,17 @@ class Request
$firstTrustedIp = null;
foreach ($clientIps as $key => $clientIp) {
- // Remove port (unfortunately, it does happen)
- if (preg_match('{((?:\d+\.){3}\d+)\:\d+}', $clientIp, $match)) {
- $clientIps[$key] = $clientIp = $match[1];
+ if (strpos($clientIp, '.')) {
+ // Strip :port from IPv4 addresses. This is allowed in Forwarded
+ // and may occur in X-Forwarded-For.
+ $i = strpos($clientIp, ':');
+ if ($i) {
+ $clientIps[$key] = $clientIp = substr($clientIp, 0, $i);
+ }
+ } elseif (0 === strpos($clientIp, '[')) {
+ // Strip brackets and :port from IPv6 addresses.
+ $i = strpos($clientIp, ']', 1);
+ $clientIps[$key] = $clientIp = substr($clientIp, 1, $i - 1);
}
if (!filter_var($clientIp, FILTER_VALIDATE_IP)) {
diff --git a/vendor/symfony/http-foundation/Response.php b/vendor/symfony/http-foundation/Response.php
index 4e9fb8723c..3070aed610 100644
--- a/vendor/symfony/http-foundation/Response.php
+++ b/vendor/symfony/http-foundation/Response.php
@@ -718,6 +718,7 @@ class Response
{
if ($this->isFresh()) {
$this->headers->set('Age', $this->getMaxAge());
+ $this->headers->remove('Expires');
}
return $this;
diff --git a/vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php b/vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php
index 1b9e58991c..d21791f000 100644
--- a/vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php
+++ b/vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php
@@ -208,6 +208,19 @@ class BinaryFileResponseTest extends ResponseTestCase
);
}
+ public function testUnpreparedResponseSendsFullFile()
+ {
+ $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200);
+
+ $data = file_get_contents(__DIR__.'/File/Fixtures/test.gif');
+
+ $this->expectOutputString($data);
+ $response = clone $response;
+ $response->sendContent();
+
+ $this->assertEquals(200, $response->getStatusCode());
+ }
+
/**
* @dataProvider provideInvalidRanges
*/
diff --git a/vendor/symfony/http-foundation/Tests/RequestTest.php b/vendor/symfony/http-foundation/Tests/RequestTest.php
index 426ae43e41..ff4dd67b30 100644
--- a/vendor/symfony/http-foundation/Tests/RequestTest.php
+++ b/vendor/symfony/http-foundation/Tests/RequestTest.php
@@ -900,7 +900,7 @@ class RequestTest extends TestCase
public function getClientIpsProvider()
{
- // $expected $remoteAddr $httpForwardedFor $trustedProxies
+ // $expected $remoteAddr $httpForwardedFor $trustedProxies
return array(
// simple IPv4
array(array('88.88.88.88'), '88.88.88.88', null, null),
@@ -914,8 +914,8 @@ class RequestTest extends TestCase
// forwarded for with remote IPv4 addr not trusted
array(array('127.0.0.1'), '127.0.0.1', '88.88.88.88', null),
- // forwarded for with remote IPv4 addr trusted
- array(array('88.88.88.88'), '127.0.0.1', '88.88.88.88', array('127.0.0.1')),
+ // forwarded for with remote IPv4 addr trusted + comma
+ array(array('88.88.88.88'), '127.0.0.1', '88.88.88.88,', array('127.0.0.1')),
// forwarded for with remote IPv4 and all FF addrs trusted
array(array('88.88.88.88'), '127.0.0.1', '88.88.88.88', array('127.0.0.1', '88.88.88.88')),
// forwarded for with remote IPv4 range trusted
@@ -1019,7 +1019,7 @@ class RequestTest extends TestCase
'HTTP_X_FORWARDED_FOR' => $httpXForwardedFor,
);
- Request::setTrustedProxies(array('88.88.88.88'), Request::HEADER_X_FORWARDED_ALL);
+ Request::setTrustedProxies(array('88.88.88.88'), -1);
$request->initialize(array(), array(), array(), array(), array(), $server);
@@ -2277,6 +2277,55 @@ class RequestTest extends TestCase
$this->assertEquals($expectedBaseUrl, $request->getBaseUrl());
$this->assertEquals($expectedBasePath, $request->getBasePath());
}
+
+ public function testTrustedHost()
+ {
+ Request::setTrustedProxies(array('1.1.1.1'), -1);
+
+ $request = Request::create('/');
+ $request->server->set('REMOTE_ADDR', '1.1.1.1');
+ $request->headers->set('Forwarded', 'host=localhost:8080');
+ $request->headers->set('X-Forwarded-Host', 'localhost:8080');
+
+ $this->assertSame('localhost:8080', $request->getHttpHost());
+ $this->assertSame(8080, $request->getPort());
+
+ $request = Request::create('/');
+ $request->server->set('REMOTE_ADDR', '1.1.1.1');
+ $request->headers->set('Forwarded', 'host="[::1]:443"');
+ $request->headers->set('X-Forwarded-Host', '[::1]:443');
+ $request->headers->set('X-Forwarded-Port', 443);
+
+ $this->assertSame('[::1]:443', $request->getHttpHost());
+ $this->assertSame(443, $request->getPort());
+ }
+
+ public function testTrustedPort()
+ {
+ Request::setTrustedProxies(array('1.1.1.1'), -1);
+
+ $request = Request::create('/');
+ $request->server->set('REMOTE_ADDR', '1.1.1.1');
+ $request->headers->set('Forwarded', 'host=localhost:8080');
+ $request->headers->set('X-Forwarded-Port', 8080);
+
+ $this->assertSame(8080, $request->getPort());
+
+ $request = Request::create('/');
+ $request->server->set('REMOTE_ADDR', '1.1.1.1');
+ $request->headers->set('Forwarded', 'host=localhost');
+ $request->headers->set('X-Forwarded-Port', 80);
+
+ $this->assertSame(80, $request->getPort());
+
+ $request = Request::create('/');
+ $request->server->set('REMOTE_ADDR', '1.1.1.1');
+ $request->headers->set('Forwarded', 'host="[::1]"');
+ $request->headers->set('X-Forwarded-Proto', 'https');
+ $request->headers->set('X-Forwarded-Port', 443);
+
+ $this->assertSame(443, $request->getPort());
+ }
}
class RequestContentProxy extends Request
diff --git a/vendor/symfony/http-foundation/Tests/ResponseTest.php b/vendor/symfony/http-foundation/Tests/ResponseTest.php
index 9444d54c37..43fa9b70aa 100644
--- a/vendor/symfony/http-foundation/Tests/ResponseTest.php
+++ b/vendor/symfony/http-foundation/Tests/ResponseTest.php
@@ -362,6 +362,11 @@ class ResponseTest extends ResponseTestCase
$response->headers->set('Expires', -1);
$response->expire();
$this->assertNull($response->headers->get('Age'), '->expire() does not set the Age when the response is expired');
+
+ $response = new Response();
+ $response->headers->set('Expires', date(DATE_RFC2822, time() + 600));
+ $response->expire();
+ $this->assertNull($response->headers->get('Expires'), '->expire() removes the Expires header when the response is fresh');
}
public function testGetTtl()
diff --git a/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php b/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php
index 789cb6ea6b..9649072c16 100644
--- a/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php
+++ b/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php
@@ -57,6 +57,7 @@ class SubRequestHandler
foreach ($trustedHeaders as $key => $name) {
if ($trustedHeaderSet & $key) {
$request->headers->remove($name);
+ $request->server->remove('HTTP_'.strtoupper(str_replace('-', '_', $name)));
}
}
}
@@ -76,13 +77,16 @@ class SubRequestHandler
// set trusted values, reusing as much as possible the global trusted settings
if (Request::HEADER_FORWARDED & $trustedHeaderSet) {
$trustedValues[0] .= sprintf(';host="%s";proto=%s', $request->getHttpHost(), $request->getScheme());
- $request->headers->set($trustedHeaders[Request::HEADER_FORWARDED], implode(', ', $trustedValues));
+ $request->headers->set($name = $trustedHeaders[Request::HEADER_FORWARDED], $v = implode(', ', $trustedValues));
+ $request->server->set('HTTP_'.strtoupper(str_replace('-', '_', $name)), $v);
}
if (Request::HEADER_X_FORWARDED_FOR & $trustedHeaderSet) {
- $request->headers->set($trustedHeaders[Request::HEADER_X_FORWARDED_FOR], implode(', ', $trustedIps));
+ $request->headers->set($name = $trustedHeaders[Request::HEADER_X_FORWARDED_FOR], $v = implode(', ', $trustedIps));
+ $request->server->set('HTTP_'.strtoupper(str_replace('-', '_', $name)), $v);
} elseif (!(Request::HEADER_FORWARDED & $trustedHeaderSet)) {
Request::setTrustedProxies($trustedProxies, $trustedHeaderSet | Request::HEADER_X_FORWARDED_FOR);
- $request->headers->set($trustedHeaders[Request::HEADER_X_FORWARDED_FOR], implode(', ', $trustedIps));
+ $request->headers->set($name = $trustedHeaders[Request::HEADER_X_FORWARDED_FOR], $v = implode(', ', $trustedIps));
+ $request->server->set('HTTP_'.strtoupper(str_replace('-', '_', $name)), $v);
}
// fix the client IP address by setting it to 127.0.0.1,
diff --git a/vendor/symfony/http-kernel/Kernel.php b/vendor/symfony/http-kernel/Kernel.php
index 0684f22a03..ac6471a8b9 100644
--- a/vendor/symfony/http-kernel/Kernel.php
+++ b/vendor/symfony/http-kernel/Kernel.php
@@ -67,11 +67,11 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
private $requestStackSize = 0;
private $resetServices = false;
- const VERSION = '3.4.14';
- const VERSION_ID = 30414;
+ const VERSION = '3.4.15';
+ const VERSION_ID = 30415;
const MAJOR_VERSION = 3;
const MINOR_VERSION = 4;
- const RELEASE_VERSION = 14;
+ const RELEASE_VERSION = 15;
const EXTRA_VERSION = '';
const END_OF_MAINTENANCE = '11/2020';
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php b/vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php
index c36ea55760..b3457b5d7a 100644
--- a/vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php
+++ b/vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php
@@ -47,6 +47,8 @@ class InlineFragmentRendererTest extends TestCase
$subRequest->attributes->replace(array('object' => $object, '_format' => 'html', '_controller' => 'main_controller', '_locale' => 'en'));
$subRequest->headers->set('x-forwarded-for', array('127.0.0.1'));
$subRequest->headers->set('forwarded', array('for="127.0.0.1";host="localhost";proto=http'));
+ $subRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
+ $subRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
$strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($subRequest));
@@ -101,6 +103,7 @@ class InlineFragmentRendererTest extends TestCase
$expectedSubRequest = Request::create('/');
$expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1'));
+ $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
$strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
$this->assertSame('foo', $strategy->render('/', Request::create('/'))->getContent());
@@ -193,8 +196,10 @@ class InlineFragmentRendererTest extends TestCase
if (Request::HEADER_X_FORWARDED_FOR & Request::getTrustedHeaderSet()) {
$expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1'));
+ $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
}
$expectedSubRequest->headers->set('forwarded', array('for="127.0.0.1";host="localhost";proto=http'));
+ $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
$strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
@@ -217,6 +222,8 @@ class InlineFragmentRendererTest extends TestCase
$expectedSubRequest = Request::create('/');
$expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1'));
$expectedSubRequest->headers->set('forwarded', array('for="127.0.0.1";host="localhost";proto=http'));
+ $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
+ $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
$strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
$request = Request::create('/', 'GET', array(), array(), array(), array('HTTP_IF_MODIFIED_SINCE' => 'Fri, 01 Jan 2016 00:00:00 GMT', 'HTTP_IF_NONE_MATCH' => '*'));
@@ -232,6 +239,8 @@ class InlineFragmentRendererTest extends TestCase
$expectedSubRequest->server->set('REMOTE_ADDR', '127.0.0.1');
$expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1'));
$expectedSubRequest->headers->set('forwarded', array('for="127.0.0.1";host="localhost";proto=http'));
+ $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
+ $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
$strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
@@ -249,6 +258,8 @@ class InlineFragmentRendererTest extends TestCase
$expectedSubRequest->server->set('REMOTE_ADDR', '127.0.0.1');
$expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1'));
$expectedSubRequest->headers->set('forwarded', array('for="127.0.0.1";host="localhost";proto=http'));
+ $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
+ $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
Request::setTrustedProxies(array('1.1.1.1/24'), -1);