瀏覽代碼

Undo downgrade before trying again if http seems unreliable, refs #2835

Jordi Boggiano 8 年之前
父節點
當前提交
ebae5dfd95
共有 1 個文件被更改,包括 7 次插入0 次删除
  1. 7 0
      src/Composer/Repository/ComposerRepository.php

+ 7 - 0
src/Composer/Repository/ComposerRepository.php

@@ -644,6 +644,13 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito
                 $rfs = $preFileDownloadEvent->getRemoteFilesystem();
                 $json = $rfs->getContents($hostname, $filename, false);
                 if ($sha256 && $sha256 !== hash('sha256', $json)) {
+                    // undo downgrade before trying again if http seems to be hijacked or modifying content somehow
+                    if ($this->allowSslDowngrade) {
+                        $this->url = str_replace('http://', 'https://', $this->url);
+                        $this->baseUrl = str_replace('http://', 'https://', $this->baseUrl);
+                        $filename = str_replace('http://', 'https://', $filename);
+                    }
+
                     if ($retries) {
                         usleep(100000);