aboutsummaryrefslogtreecommitdiffhomepage
path: root/assets/php/vendor/react/socket/src/DnsConnector.php
diff options
context:
space:
mode:
Diffstat (limited to 'assets/php/vendor/react/socket/src/DnsConnector.php')
-rwxr-xr-xassets/php/vendor/react/socket/src/DnsConnector.php111
1 files changed, 0 insertions, 111 deletions
diff --git a/assets/php/vendor/react/socket/src/DnsConnector.php b/assets/php/vendor/react/socket/src/DnsConnector.php
deleted file mode 100755
index 90170e5..0000000
--- a/assets/php/vendor/react/socket/src/DnsConnector.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-namespace React\Socket;
-
-use React\Dns\Resolver\Resolver;
-use React\Promise;
-use React\Promise\CancellablePromiseInterface;
-use InvalidArgumentException;
-use RuntimeException;
-
-final class DnsConnector implements ConnectorInterface
-{
- private $connector;
- private $resolver;
-
- public function __construct(ConnectorInterface $connector, Resolver $resolver)
- {
- $this->connector = $connector;
- $this->resolver = $resolver;
- }
-
- public function connect($uri)
- {
- if (strpos($uri, '://') === false) {
- $parts = parse_url('tcp://' . $uri);
- unset($parts['scheme']);
- } else {
- $parts = parse_url($uri);
- }
-
- if (!$parts || !isset($parts['host'])) {
- return Promise\reject(new InvalidArgumentException('Given URI "' . $uri . '" is invalid'));
- }
-
- $host = trim($parts['host'], '[]');
- $connector = $this->connector;
-
- return $this
- ->resolveHostname($host)
- ->then(function ($ip) use ($connector, $host, $parts) {
- $uri = '';
-
- // prepend original scheme if known
- if (isset($parts['scheme'])) {
- $uri .= $parts['scheme'] . '://';
- }
-
- if (strpos($ip, ':') !== false) {
- // enclose IPv6 addresses in square brackets before appending port
- $uri .= '[' . $ip . ']';
- } else {
- $uri .= $ip;
- }
-
- // append original port if known
- if (isset($parts['port'])) {
- $uri .= ':' . $parts['port'];
- }
-
- // append orignal path if known
- if (isset($parts['path'])) {
- $uri .= $parts['path'];
- }
-
- // append original query if known
- if (isset($parts['query'])) {
- $uri .= '?' . $parts['query'];
- }
-
- // append original hostname as query if resolved via DNS and if
- // destination URI does not contain "hostname" query param already
- $args = array();
- parse_str(isset($parts['query']) ? $parts['query'] : '', $args);
- if ($host !== $ip && !isset($args['hostname'])) {
- $uri .= (isset($parts['query']) ? '&' : '?') . 'hostname=' . rawurlencode($host);
- }
-
- // append original fragment if known
- if (isset($parts['fragment'])) {
- $uri .= '#' . $parts['fragment'];
- }
-
- return $connector->connect($uri);
- });
- }
-
- private function resolveHostname($host)
- {
- if (false !== filter_var($host, FILTER_VALIDATE_IP)) {
- return Promise\resolve($host);
- }
-
- $promise = $this->resolver->resolve($host);
-
- return new Promise\Promise(
- function ($resolve, $reject) use ($promise) {
- // resolve/reject with result of DNS lookup
- $promise->then($resolve, $reject);
- },
- function ($_, $reject) use ($promise) {
- // cancellation should reject connection attempt
- $reject(new RuntimeException('Connection attempt cancelled during DNS lookup'));
-
- // (try to) cancel pending DNS lookup
- if ($promise instanceof CancellablePromiseInterface) {
- $promise->cancel();
- }
- }
- );
- }
-}