From a6a8306c463a3d35014eaa74a3ddb17188333468 Mon Sep 17 00:00:00 2001 From: Bob Lail Date: Tue, 8 Apr 2025 11:14:56 -0700 Subject: [PATCH] fix: Don't invalidate the cached location if the response is a redirect A bug introduced with #19460 is that if a redirection has a file size (for example, if it is a 302 that also has HTML content), Homebrew will invalidate the cached location. --- Library/Homebrew/download_strategy.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb index 75887d3434..82cb409a5b 100644 --- a/Library/Homebrew/download_strategy.rb +++ b/Library/Homebrew/download_strategy.rb @@ -486,10 +486,10 @@ class CurlDownloadStrategy < AbstractFileDownloadStrategy # The cached location is no longer fresh if either: # - Last-Modified value is newer than the file's timestamp # - Content-Length value is different than the file's size - cached_location_valid = if cached_location_valid + if cached_location_valid && !is_redirection newer_last_modified = last_modified && last_modified > cached_location.mtime different_file_size = file_size&.nonzero? && file_size != cached_location.size - !(newer_last_modified || different_file_size) + cached_location_valid = !(newer_last_modified || different_file_size) end if cached_location_valid