From fff5074bbf5697a907b2832902d4219801b90bc5 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Tue, 26 Jan 2016 10:43:59 +0000 Subject: [PATCH] Fix additionalOptions getting dropped when SAN and redirect handling are combined, refs #4782 --- src/Composer/Util/RemoteFilesystem.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Composer/Util/RemoteFilesystem.php b/src/Composer/Util/RemoteFilesystem.php index b934bd145..0f906f67a 100644 --- a/src/Composer/Util/RemoteFilesystem.php +++ b/src/Composer/Util/RemoteFilesystem.php @@ -208,21 +208,23 @@ class RemoteFilesystem $this->io->setAuthentication($originUrl, urldecode($match[1]), urldecode($match[2])); } - if (isset($additionalOptions['retry-auth-failure'])) { - $this->retryAuthFailure = (bool) $additionalOptions['retry-auth-failure']; + $tempAdditionalOptions = $additionalOptions; + if (isset($tempAdditionalOptions['retry-auth-failure'])) { + $this->retryAuthFailure = (bool) $tempAdditionalOptions['retry-auth-failure']; - unset($additionalOptions['retry-auth-failure']); + unset($tempAdditionalOptions['retry-auth-failure']); } $isRedirect = false; - if (isset($additionalOptions['redirects'])) { - $this->redirects = $additionalOptions['redirects']; + if (isset($tempAdditionalOptions['redirects'])) { + $this->redirects = $tempAdditionalOptions['redirects']; $isRedirect = true; - unset($additionalOptions['redirects']); + unset($tempAdditionalOptions['redirects']); } - $options = $this->getOptionsForUrl($originUrl, $additionalOptions); + $options = $this->getOptionsForUrl($originUrl, $tempAdditionalOptions); + unset($tempAdditionalOptions); $userlandFollow = isset($options['http']['follow_location']) && !$options['http']['follow_location']; if ($this->io->isDebug()) { @@ -422,7 +424,7 @@ class RemoteFilesystem $result = $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); - if (false !== $this->storeAuth) { + if ($this->storeAuth && $this->config) { $authHelper = new AuthHelper($this->io, $this->config); $authHelper->storeAuth($this->originUrl, $this->storeAuth); $this->storeAuth = false;