Browse Source

Bitbucket: fix redirect behaviour

Stephan Vock 6 years ago
parent
commit
8b8df01336
1 changed files with 3 additions and 0 deletions
  1. 3 0
      src/Composer/Util/RemoteFilesystem.php

+ 3 - 0
src/Composer/Util/RemoteFilesystem.php

@@ -385,15 +385,18 @@ class RemoteFilesystem
 
 
         $statusCode = null;
         $statusCode = null;
         $contentType = null;
         $contentType = null;
+        $locationHeader = null;
         if (!empty($http_response_header[0])) {
         if (!empty($http_response_header[0])) {
             $statusCode = $this->findStatusCode($http_response_header);
             $statusCode = $this->findStatusCode($http_response_header);
             $contentType = $this->findHeaderValue($http_response_header, 'content-type');
             $contentType = $this->findHeaderValue($http_response_header, 'content-type');
+            $locationHeader = $this->findHeaderValue($http_response_header, 'location');
         }
         }
 
 
         // check for bitbucket login page asking to authenticate
         // check for bitbucket login page asking to authenticate
         if ($originUrl === 'bitbucket.org'
         if ($originUrl === 'bitbucket.org'
             && !$this->isPublicBitBucketDownload($fileUrl)
             && !$this->isPublicBitBucketDownload($fileUrl)
             && substr($fileUrl, -4) === '.zip'
             && substr($fileUrl, -4) === '.zip'
+            && (!$locationHeader || substr($locationHeader, -4) !== '.zip')
             && $contentType && preg_match('{^text/html\b}i', $contentType)
             && $contentType && preg_match('{^text/html\b}i', $contentType)
         ) {
         ) {
             $result = false;
             $result = false;