diff --git a/src/Composer/Util/HttpDownloader.php b/src/Composer/Util/HttpDownloader.php index a49a806f4..ad5976f09 100644 --- a/src/Composer/Util/HttpDownloader.php +++ b/src/Composer/Util/HttpDownloader.php @@ -168,7 +168,7 @@ class HttpDownloader $rfs = $this->rfs; - if ($this->curl && preg_match('{^https?://}i', $job['request']['url'])) { + if ($this->canUseCurl($job)) { $resolver = function ($resolve, $reject) use (&$job) { $job['status'] = HttpDownloader::STATUS_QUEUED; $job['resolve'] = $resolve; @@ -406,4 +406,25 @@ class HttpDownloader ); } } + + private function canUseCurl(array $job) + { + if (!$this->curl) { + return false; + } + + if (!preg_match('{^https?://}i', $job['request']['url'])) { + return false; + } + + if ( + !empty($job['request']['options']['ssl']['local_cert']) + || !empty($job['request']['options']['ssl']['local_pk']) + || !empty($job['request']['options']['ssl']['allow_self_signed']) + ) { + return false; + } + + return true; + } }