From 605b5fbcf50ca1c22c5ed3cbe5446b39fd784589 Mon Sep 17 00:00:00 2001 From: Abderrahim Kitouni Date: Wed, 18 Mar 2020 11:56:35 +0100 Subject: _downloadablefilesource.py: don't download the file if etag matches Some servers don't honor the 'If-None-Match' header and send the file even with matching etag --- src/buildstream/plugins/sources/_downloadablefilesource.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/buildstream/plugins/sources/_downloadablefilesource.py b/src/buildstream/plugins/sources/_downloadablefilesource.py index 50f8561fb..ad8fe9f22 100644 --- a/src/buildstream/plugins/sources/_downloadablefilesource.py +++ b/src/buildstream/plugins/sources/_downloadablefilesource.py @@ -178,7 +178,11 @@ class DownloadableFileSource(Source): with contextlib.closing(opener.open(request)) as response: info = response.info() - etag = info["ETag"] if "ETag" in info else None + # some servers don't honor the 'If-None-Match' header + if self.ref and etag and info["ETag"] == etag: + return self.ref + + etag = info["ETag"] filename = info.get_filename(default_name) filename = os.path.basename(filename) -- cgit v1.2.1