mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-03 18:00:50 +00:00
Updated Rector to commit 21695e77a8906dbdce7ada865b140ccbf73dca56
21695e77a8
[Php80] Handle single quoted is_granted on AnnotationToAttributeRector (#2842)
This commit is contained in:
parent
dbe8618a4c
commit
6795a511a5
|
@ -6,6 +6,10 @@ namespace Rector\PhpAttribute\AnnotationToAttributeMapper;
|
|||
use PhpParser\Node\Expr;
|
||||
use PhpParser\Node\Expr\Array_;
|
||||
use PhpParser\Node\Expr\ArrayItem;
|
||||
use PhpParser\Node\Expr\ClassConstFetch;
|
||||
use PhpParser\Node\Name;
|
||||
use PhpParser\Node\Scalar\String_;
|
||||
use Rector\Core\PhpParser\Node\Value\ValueResolver;
|
||||
use Rector\PhpAttribute\AnnotationToAttributeMapper;
|
||||
use Rector\PhpAttribute\Contract\AnnotationToAttributeMapperInterface;
|
||||
use Rector\PhpAttribute\Enum\DocTagNodeState;
|
||||
|
@ -20,6 +24,15 @@ final class ArrayAnnotationToAttributeMapper implements AnnotationToAttributeMap
|
|||
* @var \Rector\PhpAttribute\AnnotationToAttributeMapper
|
||||
*/
|
||||
private $annotationToAttributeMapper;
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
||||
*/
|
||||
private $valueResolver;
|
||||
public function __construct(ValueResolver $valueResolver)
|
||||
{
|
||||
$this->valueResolver = $valueResolver;
|
||||
}
|
||||
/**
|
||||
* Avoid circular reference
|
||||
* @required
|
||||
|
@ -52,7 +65,8 @@ final class ArrayAnnotationToAttributeMapper implements AnnotationToAttributeMap
|
|||
continue;
|
||||
}
|
||||
if ($valueExpr instanceof ArrayItem) {
|
||||
$arrayItems[] = $valueExpr;
|
||||
$valueExpr = $this->resolveValueExprWithSingleQuoteHandling($valueExpr);
|
||||
$arrayItems[] = $this->resolveValueExprWithSingleQuoteHandling($valueExpr);
|
||||
} else {
|
||||
$keyExpr = null;
|
||||
if (!\is_int($key)) {
|
||||
|
@ -64,6 +78,14 @@ final class ArrayAnnotationToAttributeMapper implements AnnotationToAttributeMap
|
|||
}
|
||||
return new Array_($arrayItems);
|
||||
}
|
||||
private function resolveValueExprWithSingleQuoteHandling(ArrayItem $arrayItem) : ArrayItem
|
||||
{
|
||||
if ($arrayItem->key === null && $arrayItem->value instanceof ClassConstFetch && $arrayItem->value->class instanceof Name && \strpos((string) $arrayItem->value->class, "'") !== \false) {
|
||||
$arrayItem->value = new String_($this->valueResolver->getValue($arrayItem->value));
|
||||
return $arrayItem;
|
||||
}
|
||||
return $arrayItem;
|
||||
}
|
||||
/**
|
||||
* @param mixed $value
|
||||
*/
|
||||
|
|
|
@ -17,12 +17,12 @@ final class VersionResolver
|
|||
* @api
|
||||
* @var string
|
||||
*/
|
||||
public const PACKAGE_VERSION = '7215c28735a3f1b3e56f86b5b57085ec3d8956c3';
|
||||
public const PACKAGE_VERSION = '21695e77a8906dbdce7ada865b140ccbf73dca56';
|
||||
/**
|
||||
* @api
|
||||
* @var string
|
||||
*/
|
||||
public const RELEASE_DATE = '2022-08-25 08:02:41';
|
||||
public const RELEASE_DATE = '2022-08-26 08:42:30';
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
|
|
2
vendor/autoload.php
vendored
2
vendor/autoload.php
vendored
|
@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) {
|
|||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInite174ad2947dde651e4bd1b958663937c::getLoader();
|
||||
return ComposerAutoloaderInit247e8f9654d22e33915b5660b3fb3c6c::getLoader();
|
||||
|
|
14
vendor/composer/autoload_real.php
vendored
14
vendor/composer/autoload_real.php
vendored
|
@ -2,7 +2,7 @@
|
|||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInite174ad2947dde651e4bd1b958663937c
|
||||
class ComposerAutoloaderInit247e8f9654d22e33915b5660b3fb3c6c
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
|
@ -22,19 +22,19 @@ class ComposerAutoloaderInite174ad2947dde651e4bd1b958663937c
|
|||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInite174ad2947dde651e4bd1b958663937c', 'loadClassLoader'), true, true);
|
||||
spl_autoload_register(array('ComposerAutoloaderInit247e8f9654d22e33915b5660b3fb3c6c', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInite174ad2947dde651e4bd1b958663937c', 'loadClassLoader'));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit247e8f9654d22e33915b5660b3fb3c6c', 'loadClassLoader'));
|
||||
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInite174ad2947dde651e4bd1b958663937c::getInitializer($loader));
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit247e8f9654d22e33915b5660b3fb3c6c::getInitializer($loader));
|
||||
|
||||
$loader->setClassMapAuthoritative(true);
|
||||
$loader->register(true);
|
||||
|
||||
$includeFiles = \Composer\Autoload\ComposerStaticInite174ad2947dde651e4bd1b958663937c::$files;
|
||||
$includeFiles = \Composer\Autoload\ComposerStaticInit247e8f9654d22e33915b5660b3fb3c6c::$files;
|
||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||
composerRequiree174ad2947dde651e4bd1b958663937c($fileIdentifier, $file);
|
||||
composerRequire247e8f9654d22e33915b5660b3fb3c6c($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
|
@ -46,7 +46,7 @@ class ComposerAutoloaderInite174ad2947dde651e4bd1b958663937c
|
|||
* @param string $file
|
||||
* @return void
|
||||
*/
|
||||
function composerRequiree174ad2947dde651e4bd1b958663937c($fileIdentifier, $file)
|
||||
function composerRequire247e8f9654d22e33915b5660b3fb3c6c($fileIdentifier, $file)
|
||||
{
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
|
|
8
vendor/composer/autoload_static.php
vendored
8
vendor/composer/autoload_static.php
vendored
|
@ -4,7 +4,7 @@
|
|||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInite174ad2947dde651e4bd1b958663937c
|
||||
class ComposerStaticInit247e8f9654d22e33915b5660b3fb3c6c
|
||||
{
|
||||
public static $files = array (
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
|
@ -3256,9 +3256,9 @@ class ComposerStaticInite174ad2947dde651e4bd1b958663937c
|
|||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInite174ad2947dde651e4bd1b958663937c::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInite174ad2947dde651e4bd1b958663937c::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInite174ad2947dde651e4bd1b958663937c::$classMap;
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit247e8f9654d22e33915b5660b3fb3c6c::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit247e8f9654d22e33915b5660b3fb3c6c::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInit247e8f9654d22e33915b5660b3fb3c6c::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
|
|
22
vendor/composer/installed.json
vendored
22
vendor/composer/installed.json
vendored
|
@ -1554,17 +1554,17 @@
|
|||
},
|
||||
{
|
||||
"name": "react\/socket",
|
||||
"version": "v1.11.0",
|
||||
"version_normalized": "1.11.0.0",
|
||||
"version": "v1.12.0",
|
||||
"version_normalized": "1.12.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https:\/\/github.com\/reactphp\/socket.git",
|
||||
"reference": "f474156aaab4f09041144fa8b57c7d70aed32a1c"
|
||||
"reference": "81e1b4d7f5450ebd8d2e9a95bb008bb15ca95a7b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https:\/\/api.github.com\/repos\/reactphp\/socket\/zipball\/f474156aaab4f09041144fa8b57c7d70aed32a1c",
|
||||
"reference": "f474156aaab4f09041144fa8b57c7d70aed32a1c",
|
||||
"url": "https:\/\/api.github.com\/repos\/reactphp\/socket\/zipball\/81e1b4d7f5450ebd8d2e9a95bb008bb15ca95a7b",
|
||||
"reference": "81e1b4d7f5450ebd8d2e9a95bb008bb15ca95a7b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1572,16 +1572,16 @@
|
|||
"php": ">=5.3.0",
|
||||
"react\/dns": "^1.8",
|
||||
"react\/event-loop": "^1.2",
|
||||
"react\/promise": "^2.6.0 || ^1.2.1",
|
||||
"react\/promise-timer": "^1.8",
|
||||
"react\/promise": "^3 || ^2.6 || ^1.2.1",
|
||||
"react\/promise-timer": "^1.9",
|
||||
"react\/stream": "^1.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"clue\/block-react": "^1.5",
|
||||
"phpunit\/phpunit": "^9.3 || ^5.7 || ^4.8.35",
|
||||
"react\/promise-stream": "^1.2"
|
||||
"react\/async": "^4 || ^3 || ^2",
|
||||
"react\/promise-stream": "^1.4"
|
||||
},
|
||||
"time": "2022-01-14T10:14:32+00:00",
|
||||
"time": "2022-08-25T12:32:25+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
|
@ -1625,7 +1625,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https:\/\/github.com\/reactphp\/socket\/issues",
|
||||
"source": "https:\/\/github.com\/reactphp\/socket\/tree\/v1.11.0"
|
||||
"source": "https:\/\/github.com\/reactphp\/socket\/tree\/v1.12.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
2
vendor/composer/installed.php
vendored
2
vendor/composer/installed.php
vendored
File diff suppressed because one or more lines are too long
23
vendor/react/socket/CHANGELOG.md
vendored
23
vendor/react/socket/CHANGELOG.md
vendored
|
@ -1,5 +1,28 @@
|
|||
# Changelog
|
||||
|
||||
## 1.12.0 (2022-08-25)
|
||||
|
||||
* Feature: Forward compatibility with react/promise 3.
|
||||
(#214 by @WyriHaximus and @clue)
|
||||
|
||||
* Feature: Full support for PHP 8.2 release.
|
||||
(#298 by @WyriHaximus)
|
||||
|
||||
* Feature: Avoid unneeded syscall on socket close.
|
||||
(#292 by @clue)
|
||||
|
||||
* Feature / Fix: Improve error reporting when custom error handler is used.
|
||||
(#290 by @clue)
|
||||
|
||||
* Fix: Fix invalid references in exception stack trace.
|
||||
(#284 by @clue)
|
||||
|
||||
* Minor documentation improvements, update to use new reactphp/async package instead of clue/reactphp-block.
|
||||
(#296 by @clue, #285 by @SimonFrings and #295 by @nhedger)
|
||||
|
||||
* Improve test suite, update macOS and HHVM environment, fix optional tests for `ENETUNREACH`.
|
||||
(#288, #289 and #297 by @clue)
|
||||
|
||||
## 1.11.0 (2022-01-14)
|
||||
|
||||
* Feature: Full support for PHP 8.1 release.
|
||||
|
|
9
vendor/react/socket/README.md
vendored
9
vendor/react/socket/README.md
vendored
|
@ -1,6 +1,7 @@
|
|||
# Socket
|
||||
|
||||
[![CI status](https://github.com/reactphp/socket/workflows/CI/badge.svg)](https://github.com/reactphp/socket/actions)
|
||||
[![installs on Packagist](https://img.shields.io/packagist/dt/react/socket?color=blue&label=installs%20on%20Packagist)](https://packagist.org/packages/react/socket)
|
||||
|
||||
Async, streaming plaintext TCP/IP and secure TLS socket server and client
|
||||
connections for [ReactPHP](https://reactphp.org/).
|
||||
|
@ -1493,7 +1494,7 @@ This project follows [SemVer](https://semver.org/).
|
|||
This will install the latest supported version:
|
||||
|
||||
```bash
|
||||
$ composer require react/socket:^1.11
|
||||
composer require react/socket:^1.12
|
||||
```
|
||||
|
||||
See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades.
|
||||
|
@ -1541,13 +1542,13 @@ To run the test suite, you first need to clone this repo and then install all
|
|||
dependencies [through Composer](https://getcomposer.org/):
|
||||
|
||||
```bash
|
||||
$ composer install
|
||||
composer install
|
||||
```
|
||||
|
||||
To run the test suite, go to the project root and run:
|
||||
|
||||
```bash
|
||||
$ vendor/bin/phpunit
|
||||
vendor/bin/phpunit
|
||||
```
|
||||
|
||||
The test suite also contains a number of functional integration tests that rely
|
||||
|
@ -1555,7 +1556,7 @@ on a stable internet connection.
|
|||
If you do not want to run these, they can simply be skipped like this:
|
||||
|
||||
```bash
|
||||
$ vendor/bin/phpunit --exclude-group internet
|
||||
vendor/bin/phpunit --exclude-group internet
|
||||
```
|
||||
|
||||
## License
|
||||
|
|
8
vendor/react/socket/composer.json
vendored
8
vendor/react/socket/composer.json
vendored
|
@ -36,14 +36,14 @@
|
|||
"evenement\/evenement": "^3.0 || ^2.0 || ^1.0",
|
||||
"react\/dns": "^1.8",
|
||||
"react\/event-loop": "^1.2",
|
||||
"react\/promise": "^2.6.0 || ^1.2.1",
|
||||
"react\/promise-timer": "^1.8",
|
||||
"react\/promise": "^3 || ^2.6 || ^1.2.1",
|
||||
"react\/promise-timer": "^1.9",
|
||||
"react\/stream": "^1.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"clue\/block-react": "^1.5",
|
||||
"phpunit\/phpunit": "^9.3 || ^5.7 || ^4.8.35",
|
||||
"react\/promise-stream": "^1.2"
|
||||
"react\/async": "^4 || ^3 || ^2",
|
||||
"react\/promise-stream": "^1.4"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
|
8
vendor/react/socket/src/Connection.php
vendored
8
vendor/react/socket/src/Connection.php
vendored
|
@ -102,13 +102,9 @@ class Connection extends EventEmitter implements ConnectionInterface
|
|||
return;
|
||||
}
|
||||
// Try to cleanly shut down socket and ignore any errors in case other
|
||||
// side already closed. Shutting down may return to blocking mode on
|
||||
// some legacy versions, so reset to non-blocking just in case before
|
||||
// continuing to close the socket resource.
|
||||
// Underlying Stream implementation will take care of closing file
|
||||
// handle, so we otherwise keep this open here.
|
||||
// side already closed. Underlying Stream implementation will take care
|
||||
// of closing stream resource, so we otherwise keep this open here.
|
||||
@\stream_socket_shutdown($this->stream, \STREAM_SHUT_RDWR);
|
||||
\stream_set_blocking($this->stream, \false);
|
||||
}
|
||||
public function getRemoteAddress()
|
||||
{
|
||||
|
|
10
vendor/react/socket/src/DnsConnector.php
vendored
10
vendor/react/socket/src/DnsConnector.php
vendored
|
@ -4,7 +4,7 @@ namespace RectorPrefix202208\React\Socket;
|
|||
|
||||
use RectorPrefix202208\React\Dns\Resolver\ResolverInterface;
|
||||
use RectorPrefix202208\React\Promise;
|
||||
use RectorPrefix202208\React\Promise\CancellablePromiseInterface;
|
||||
use RectorPrefix202208\React\Promise\PromiseInterface;
|
||||
final class DnsConnector implements ConnectorInterface
|
||||
{
|
||||
private $connector;
|
||||
|
@ -52,11 +52,11 @@ final class DnsConnector implements ConnectorInterface
|
|||
$trace = $r->getValue($e);
|
||||
// Exception trace arguments are not available on some PHP 7.4 installs
|
||||
// @codeCoverageIgnoreStart
|
||||
foreach ($trace as &$one) {
|
||||
foreach ($trace as $ti => $one) {
|
||||
if (isset($one['args'])) {
|
||||
foreach ($one['args'] as &$arg) {
|
||||
foreach ($one['args'] as $ai => $arg) {
|
||||
if ($arg instanceof \Closure) {
|
||||
$arg = 'Object(' . \get_class($arg) . ')';
|
||||
$trace[$ti]['args'][$ai] = 'Object(' . \get_class($arg) . ')';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ final class DnsConnector implements ConnectorInterface
|
|||
$reject(new \RuntimeException('Connection to ' . $uri . ' cancelled during DNS lookup (ECONNABORTED)', \defined('SOCKET_ECONNABORTED') ? \SOCKET_ECONNABORTED : 103));
|
||||
}
|
||||
// (try to) cancel pending DNS lookup / connection attempt
|
||||
if ($promise instanceof CancellablePromiseInterface) {
|
||||
if ($promise instanceof PromiseInterface && \method_exists($promise, 'cancel')) {
|
||||
// overwrite callback arguments for PHP7+ only, so they do not show
|
||||
// up in the Exception trace and do not cause a possible cyclic reference.
|
||||
$_ = $reject = null;
|
||||
|
|
14
vendor/react/socket/src/FdServer.php
vendored
14
vendor/react/socket/src/FdServer.php
vendored
|
@ -82,14 +82,18 @@ final class FdServer extends EventEmitter implements ServerInterface
|
|||
throw new \InvalidArgumentException('Invalid FD number given (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : 22);
|
||||
}
|
||||
$this->loop = $loop ?: Loop::get();
|
||||
$this->master = @\fopen('php://fd/' . $fd, 'r+');
|
||||
if (\false === $this->master) {
|
||||
$errno = 0;
|
||||
$errstr = '';
|
||||
\set_error_handler(function ($_, $error) use(&$errno, &$errstr) {
|
||||
// Match errstr from PHP's warning message.
|
||||
// fopen(php://fd/3): Failed to open stream: Error duping file descriptor 3; possibly it doesn't exist: [9]: Bad file descriptor
|
||||
$error = \error_get_last();
|
||||
\preg_match('/\\[(\\d+)\\]: (.*)/', $error['message'], $m);
|
||||
\preg_match('/\\[(\\d+)\\]: (.*)/', $error, $m);
|
||||
$errno = isset($m[1]) ? (int) $m[1] : 0;
|
||||
$errstr = isset($m[2]) ? $m[2] : $error['message'];
|
||||
$errstr = isset($m[2]) ? $m[2] : $error;
|
||||
});
|
||||
$this->master = \fopen('php://fd/' . $fd, 'r+');
|
||||
\restore_error_handler();
|
||||
if (\false === $this->master) {
|
||||
throw new \RuntimeException('Failed to listen on FD ' . $fd . ': ' . $errstr . SocketServer::errconst($errno), $errno);
|
||||
}
|
||||
$meta = \stream_get_meta_data($this->master);
|
||||
|
|
|
@ -7,7 +7,7 @@ use RectorPrefix202208\React\Dns\Resolver\ResolverInterface;
|
|||
use RectorPrefix202208\React\EventLoop\LoopInterface;
|
||||
use RectorPrefix202208\React\EventLoop\TimerInterface;
|
||||
use RectorPrefix202208\React\Promise;
|
||||
use RectorPrefix202208\React\Promise\CancellablePromiseInterface;
|
||||
use RectorPrefix202208\React\Promise\PromiseInterface;
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
|
@ -198,12 +198,12 @@ final class HappyEyeBallsConnectionBuilder
|
|||
// clear list of outstanding IPs to avoid creating new connections
|
||||
$this->connectQueue = array();
|
||||
foreach ($this->connectionPromises as $connectionPromise) {
|
||||
if ($connectionPromise instanceof CancellablePromiseInterface) {
|
||||
if ($connectionPromise instanceof PromiseInterface && \method_exists($connectionPromise, 'cancel')) {
|
||||
$connectionPromise->cancel();
|
||||
}
|
||||
}
|
||||
foreach ($this->resolverPromises as $resolverPromise) {
|
||||
if ($resolverPromise instanceof CancellablePromiseInterface) {
|
||||
if ($resolverPromise instanceof PromiseInterface && \method_exists($resolverPromise, 'cancel')) {
|
||||
$resolverPromise->cancel();
|
||||
}
|
||||
}
|
||||
|
|
7
vendor/react/socket/src/SecureConnector.php
vendored
7
vendor/react/socket/src/SecureConnector.php
vendored
|
@ -35,6 +35,7 @@ final class SecureConnector implements ConnectorInterface
|
|||
$context = $this->context;
|
||||
$encryption = $this->streamEncryption;
|
||||
$connected = \false;
|
||||
/** @var \React\Promise\PromiseInterface $promise */
|
||||
$promise = $this->connector->connect(\str_replace('tls://', '', $uri))->then(function (ConnectionInterface $connection) use($context, $encryption, $uri, &$promise, &$connected) {
|
||||
// (unencrypted) TCP/IP connection succeeded
|
||||
$connected = \true;
|
||||
|
@ -63,11 +64,11 @@ final class SecureConnector implements ConnectorInterface
|
|||
$trace = $r->getValue($e);
|
||||
// Exception trace arguments are not available on some PHP 7.4 installs
|
||||
// @codeCoverageIgnoreStart
|
||||
foreach ($trace as &$one) {
|
||||
foreach ($trace as $ti => $one) {
|
||||
if (isset($one['args'])) {
|
||||
foreach ($one['args'] as &$arg) {
|
||||
foreach ($one['args'] as $ai => $arg) {
|
||||
if ($arg instanceof \Closure) {
|
||||
$arg = 'Object(' . \get_class($arg) . ')';
|
||||
$trace[$ti]['args'][$ai] = 'Object(' . \get_class($arg) . ')';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
14
vendor/react/socket/src/SocketServer.php
vendored
14
vendor/react/socket/src/SocketServer.php
vendored
|
@ -86,13 +86,17 @@ final class SocketServer extends EventEmitter implements ServerInterface
|
|||
*/
|
||||
public static function accept($socket)
|
||||
{
|
||||
$newSocket = @\stream_socket_accept($socket, 0);
|
||||
if (\false === $newSocket) {
|
||||
$errno = 0;
|
||||
$errstr = '';
|
||||
\set_error_handler(function ($_, $error) use(&$errno, &$errstr) {
|
||||
// Match errstr from PHP's warning message.
|
||||
// stream_socket_accept(): accept failed: Connection timed out
|
||||
$error = \error_get_last();
|
||||
$errstr = \preg_replace('#.*: #', '', $error['message']);
|
||||
$errno = self::errno($errstr);
|
||||
$errstr = \preg_replace('#.*: #', '', $error);
|
||||
$errno = SocketServer::errno($errstr);
|
||||
});
|
||||
$newSocket = \stream_socket_accept($socket, 0);
|
||||
\restore_error_handler();
|
||||
if (\false === $newSocket) {
|
||||
throw new \RuntimeException('Unable to accept new connection: ' . $errstr . self::errconst($errno), $errno);
|
||||
}
|
||||
return $newSocket;
|
||||
|
|
2
vendor/react/socket/src/StreamEncryption.php
vendored
2
vendor/react/socket/src/StreamEncryption.php
vendored
|
@ -94,7 +94,7 @@ class StreamEncryption
|
|||
$result = \stream_socket_enable_crypto($socket, $toggle, $method);
|
||||
\restore_error_handler();
|
||||
if (\true === $result) {
|
||||
$deferred->resolve();
|
||||
$deferred->resolve(null);
|
||||
} else {
|
||||
if (\false === $result) {
|
||||
// overwrite callback arguments for PHP7+ only, so they do not show
|
||||
|
|
17
vendor/react/socket/src/TcpConnector.php
vendored
17
vendor/react/socket/src/TcpConnector.php
vendored
|
@ -78,12 +78,17 @@ final class TcpConnector implements ConnectorInterface
|
|||
// Linux reports socket errno and errstr again when trying to write to the dead socket.
|
||||
// Suppress error reporting to get error message below and close dead socket before rejecting.
|
||||
// This is only known to work on Linux, Mac and Windows are known to not support this.
|
||||
@\fwrite($stream, \PHP_EOL);
|
||||
$error = \error_get_last();
|
||||
// fwrite(): send of 2 bytes failed with errno=111 Connection refused
|
||||
\preg_match('/errno=(\\d+) (.+)/', $error['message'], $m);
|
||||
$errno = isset($m[1]) ? (int) $m[1] : 0;
|
||||
$errstr = isset($m[2]) ? $m[2] : $error['message'];
|
||||
$errno = 0;
|
||||
$errstr = '';
|
||||
\set_error_handler(function ($_, $error) use(&$errno, &$errstr) {
|
||||
// Match errstr from PHP's warning message.
|
||||
// fwrite(): send of 1 bytes failed with errno=111 Connection refused
|
||||
\preg_match('/errno=(\\d+) (.+)/', $error, $m);
|
||||
$errno = isset($m[1]) ? (int) $m[1] : 0;
|
||||
$errstr = isset($m[2]) ? $m[2] : $error;
|
||||
});
|
||||
\fwrite($stream, \PHP_EOL);
|
||||
\restore_error_handler();
|
||||
} else {
|
||||
// Not on Linux and ext-sockets not available? Too bad.
|
||||
$errno = \defined('SOCKET_ECONNREFUSED') ? \SOCKET_ECONNREFUSED : 111;
|
||||
|
|
18
vendor/react/socket/src/UnixServer.php
vendored
18
vendor/react/socket/src/UnixServer.php
vendored
|
@ -56,18 +56,20 @@ final class UnixServer extends EventEmitter implements ServerInterface
|
|||
} elseif (\substr($path, 0, 7) !== 'unix://') {
|
||||
throw new \InvalidArgumentException('Given URI "' . $path . '" is invalid (EINVAL)', \defined('SOCKET_EINVAL') ? \SOCKET_EINVAL : 22);
|
||||
}
|
||||
$this->master = @\stream_socket_server($path, $errno, $errstr, \STREAM_SERVER_BIND | \STREAM_SERVER_LISTEN, \stream_context_create(array('socket' => $context)));
|
||||
if (\false === $this->master) {
|
||||
$errno = 0;
|
||||
$errstr = '';
|
||||
\set_error_handler(function ($_, $error) use(&$errno, &$errstr) {
|
||||
// PHP does not seem to report errno/errstr for Unix domain sockets (UDS) right now.
|
||||
// This only applies to UDS server sockets, see also https://3v4l.org/NAhpr.
|
||||
// Parse PHP warning message containing unknown error, HHVM reports proper info at least.
|
||||
if ($errno === 0 && $errstr === '') {
|
||||
$error = \error_get_last();
|
||||
if (\preg_match('/\\(([^\\)]+)\\)|\\[(\\d+)\\]: (.*)/', $error['message'], $match)) {
|
||||
$errstr = isset($match[3]) ? $match['3'] : $match[1];
|
||||
$errno = isset($match[2]) ? (int) $match[2] : 0;
|
||||
}
|
||||
if (\preg_match('/\\(([^\\)]+)\\)|\\[(\\d+)\\]: (.*)/', $error, $match)) {
|
||||
$errstr = isset($match[3]) ? $match['3'] : $match[1];
|
||||
$errno = isset($match[2]) ? (int) $match[2] : 0;
|
||||
}
|
||||
});
|
||||
$this->master = \stream_socket_server($path, $errno, $errstr, \STREAM_SERVER_BIND | \STREAM_SERVER_LISTEN, \stream_context_create(array('socket' => $context)));
|
||||
\restore_error_handler();
|
||||
if (\false === $this->master) {
|
||||
throw new \RuntimeException('Failed to listen on Unix domain socket "' . $path . '": ' . $errstr . SocketServer::errconst($errno), $errno);
|
||||
}
|
||||
\stream_set_blocking($this->master, 0);
|
||||
|
|
Loading…
Reference in New Issue
Block a user