From 4f47a4c6679f6cedada38704f35f725bb8f5511d Mon Sep 17 00:00:00 2001 From: John Stevenson Date: Fri, 5 Mar 2021 19:05:36 +0000 Subject: [PATCH] Proxy handling docs and tweaks (#9735) --- src/Composer/Util/Http/CurlDownloader.php | 1 - src/Composer/Util/Http/ProxyHelper.php | 2 ++ src/Composer/Util/RemoteFilesystem.php | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Composer/Util/Http/CurlDownloader.php b/src/Composer/Util/Http/CurlDownloader.php index 5e9494aed..7e4753496 100644 --- a/src/Composer/Util/Http/CurlDownloader.php +++ b/src/Composer/Util/Http/CurlDownloader.php @@ -183,7 +183,6 @@ class CurlDownloader } $options['http']['header'] = $this->authHelper->addAuthenticationHeader($options['http']['header'], $origin, $url); - // Merge in headers - we don't get any proxy values $options = StreamContextFactory::initOptions($url, $options, true); foreach (self::$options as $type => $curlOptions) { diff --git a/src/Composer/Util/Http/ProxyHelper.php b/src/Composer/Util/Http/ProxyHelper.php index 4ca7a4bc8..e291f5b81 100644 --- a/src/Composer/Util/Http/ProxyHelper.php +++ b/src/Composer/Util/Http/ProxyHelper.php @@ -131,12 +131,14 @@ class ProxyHelper $error = sprintf('malformed %s url', $envName); $proxy = parse_url($proxyUrl); + // We need parse_url to have identified a host if (!isset($proxy['host'])) { throw new \RuntimeException($error); } $proxyUrl = self::formatParsedUrl($proxy, true); + // We need a port because streams and curl use different defaults if (!parse_url($proxyUrl, PHP_URL_PORT)) { throw new \RuntimeException($error); } diff --git a/src/Composer/Util/RemoteFilesystem.php b/src/Composer/Util/RemoteFilesystem.php index ea899b312..8b8e0c3e0 100644 --- a/src/Composer/Util/RemoteFilesystem.php +++ b/src/Composer/Util/RemoteFilesystem.php @@ -254,7 +254,7 @@ class RemoteFilesystem $ctx = StreamContextFactory::getContext($fileUrl, $options, array('notification' => array($this, 'callbackGet'))); - $proxy = ProxyManager::getInstance()->getProxyForRequest($fileUrl); + $proxy = $this->proxyManager->getProxyForRequest($fileUrl); $usingProxy = $proxy->getFormattedUrl(' using proxy (%s)'); $this->io->writeError((strpos($origFileUrl, 'http') === 0 ? 'Downloading ' : 'Reading ') . Url::sanitize($origFileUrl) . $usingProxy, true, IOInterface::DEBUG); unset($origFileUrl, $proxy, $usingProxy);