Updated Symfony HttpFoundation to 2.1.6.
This commit is contained in:
@@ -31,9 +31,9 @@ class RequestMatcher implements RequestMatcherInterface
|
||||
private $host;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var array
|
||||
*/
|
||||
private $methods;
|
||||
private $methods = array();
|
||||
|
||||
/**
|
||||
* @var string
|
||||
@@ -41,19 +41,26 @@ class RequestMatcher implements RequestMatcherInterface
|
||||
private $ip;
|
||||
|
||||
/**
|
||||
* Attributes.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $attributes;
|
||||
private $attributes = array();
|
||||
|
||||
/**
|
||||
* @param string|null $path
|
||||
* @param string|null $host
|
||||
* @param string|string[]|null $methods
|
||||
* @param string|null $ip
|
||||
* @param array $attributes
|
||||
*/
|
||||
public function __construct($path = null, $host = null, $methods = null, $ip = null, array $attributes = array())
|
||||
{
|
||||
$this->path = $path;
|
||||
$this->host = $host;
|
||||
$this->methods = $methods;
|
||||
$this->ip = $ip;
|
||||
$this->attributes = $attributes;
|
||||
$this->matchPath($path);
|
||||
$this->matchHost($host);
|
||||
$this->matchMethod($methods);
|
||||
$this->matchIp($ip);
|
||||
foreach ($attributes as $k => $v) {
|
||||
$this->matchAttribute($k, $v);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -89,11 +96,11 @@ class RequestMatcher implements RequestMatcherInterface
|
||||
/**
|
||||
* Adds a check for the HTTP method.
|
||||
*
|
||||
* @param string|array $method An HTTP method or an array of HTTP methods
|
||||
* @param string|string[]|null $method An HTTP method or an array of HTTP methods
|
||||
*/
|
||||
public function matchMethod($method)
|
||||
{
|
||||
$this->methods = array_map('strtoupper', is_array($method) ? $method : array($method));
|
||||
$this->methods = array_map('strtoupper', (array) $method);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -114,7 +121,7 @@ class RequestMatcher implements RequestMatcherInterface
|
||||
*/
|
||||
public function matches(Request $request)
|
||||
{
|
||||
if (null !== $this->methods && !in_array($request->getMethod(), $this->methods)) {
|
||||
if ($this->methods && !in_array($request->getMethod(), $this->methods)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -127,12 +134,12 @@ class RequestMatcher implements RequestMatcherInterface
|
||||
if (null !== $this->path) {
|
||||
$path = str_replace('#', '\\#', $this->path);
|
||||
|
||||
if (!preg_match('#'.$path.'#', $request->getPathInfo())) {
|
||||
if (!preg_match('#'.$path.'#', rawurldecode($request->getPathInfo()))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (null !== $this->host && !preg_match('#'.str_replace('#', '\\#', $this->host).'#', $request->getHost())) {
|
||||
if (null !== $this->host && !preg_match('#'.str_replace('#', '\\#', $this->host).'#i', $request->getHost())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -198,11 +205,20 @@ class RequestMatcher implements RequestMatcherInterface
|
||||
*/
|
||||
protected function checkIp6($requestIp, $ip)
|
||||
{
|
||||
if (!defined('AF_INET6')) {
|
||||
if (!((extension_loaded('sockets') && defined('AF_INET6')) || @inet_pton('::1'))) {
|
||||
throw new \RuntimeException('Unable to check Ipv6. Check that PHP was not compiled with option "disable-ipv6".');
|
||||
}
|
||||
|
||||
list($address, $netmask) = explode('/', $ip, 2);
|
||||
if (false !== strpos($ip, '/')) {
|
||||
list($address, $netmask) = explode('/', $ip, 2);
|
||||
|
||||
if ($netmask < 1 || $netmask > 128) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
$address = $ip;
|
||||
$netmask = 128;
|
||||
}
|
||||
|
||||
$bytesAddr = unpack("n*", inet_pton($address));
|
||||
$bytesTest = unpack("n*", inet_pton($requestIp));
|
||||
|
||||
Reference in New Issue
Block a user