From cb3c71a18a7e52cc765d8be223a5f61187eb2f55 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Mon, 7 Sep 2020 17:00:02 +0200 Subject: [PATCH] Always assume the cache file is fresh when loading a package again which was already loaded, even if it lacks a last-modified header. --- src/Composer/Repository/ComposerRepository.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Composer/Repository/ComposerRepository.php b/src/Composer/Repository/ComposerRepository.php index 344d61917..451f311cb 100644 --- a/src/Composer/Repository/ComposerRepository.php +++ b/src/Composer/Repository/ComposerRepository.php @@ -568,13 +568,12 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito } elseif ($useLastModifiedCheck) { if ($contents = $this->cache->read($cacheKey)) { $contents = json_decode($contents, true); - if (isset($contents['last-modified'])) { - if (isset($alreadyLoaded[$name])) { - $packages = $contents; - } else { - $response = $this->fetchFileIfLastModified($url, $cacheKey, $contents['last-modified']); - $packages = true === $response ? $contents : $response; - } + // we already loaded some packages from this file, so assume it is fresh and avoid fetching it again + if (isset($alreadyLoaded[$name])) { + $packages = $contents; + } elseif (isset($contents['last-modified'])) { + $response = $this->fetchFileIfLastModified($url, $cacheKey, $contents['last-modified']); + $packages = true === $response ? $contents : $response; } } }