Browse Source

Avoid decoding gzip responses after a redirect, fixes #4897

Jordi Boggiano 9 years ago
parent
commit
09a6a19257
1 changed files with 3 additions and 1 deletions
  1. 3 1
      src/Composer/Util/RemoteFilesystem.php

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

@@ -311,7 +311,9 @@ class RemoteFilesystem
         }
 
         // handle 3xx redirects for php<5.6, 304 Not Modified is excluded
+        $hasFollowedRedirect = false;
         if ($userlandFollow && $statusCode >= 300 && $statusCode <= 399 && $statusCode !== 304 && $this->redirects < $this->maxRedirects) {
+            $hasFollowedRedirect = true;
             $result = $this->handleRedirect($http_response_header, $additionalOptions, $result);
         }
 
@@ -332,7 +334,7 @@ class RemoteFilesystem
         }
 
         // decode gzip
-        if ($result && extension_loaded('zlib') && substr($fileUrl, 0, 4) === 'http') {
+        if ($result && extension_loaded('zlib') && substr($fileUrl, 0, 4) === 'http' && !$hasFollowedRedirect) {
             $decode = 'gzip' === strtolower($this->findHeaderValue($http_response_header, 'content-encoding'));
 
             if ($decode) {