about summary refs log tree commit diff
path: root/src/libstore/download.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/download.cc')
-rw-r--r--src/libstore/download.cc14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/libstore/download.cc b/src/libstore/download.cc
index 5cb2b497a50a..ed7e124d25f4 100644
--- a/src/libstore/download.cc
+++ b/src/libstore/download.cc
@@ -249,13 +249,7 @@ ref<Downloader> makeDownloader()
     return make_ref<CurlDownloader>();
 }
 
-Path Downloader::downloadCached(ref<Store> store, const string & url_, bool unpack, string name, const Hash & expectedHash)
-{
-    string ignored;
-    return downloadCached(store, url_, unpack, ignored, expectedHash);
-}
-
-Path Downloader::downloadCached(ref<Store> store, const string & url_, bool unpack, string & effectiveUrl, const Hash & expectedHash)
+Path Downloader::downloadCached(ref<Store> store, const string & url_, bool unpack, string name, const Hash & expectedHash, string * effectiveUrl)
 {
     auto url = resolveUri(url_);
 
@@ -295,7 +289,8 @@ Path Downloader::downloadCached(ref<Store> store, const string & url_, bool unpa
                 time_t lastChecked;
                 if (string2Int(ss[2], lastChecked) && lastChecked + ttl >= time(0)) {
                     skip = true;
-                    effectiveUrl = url_;
+                    if (effectiveUrl)
+                        *effectiveUrl = url_;
                 } else if (!ss[1].empty()) {
                     printMsg(lvlDebug, format("verifying previous ETag ‘%1%’") % ss[1]);
                     expectedETag = ss[1];
@@ -311,7 +306,8 @@ Path Downloader::downloadCached(ref<Store> store, const string & url_, bool unpa
             DownloadOptions options;
             options.expectedETag = expectedETag;
             auto res = download(url, options);
-            effectiveUrl = res.effectiveUrl;
+            if (effectiveUrl)
+                *effectiveUrl = res.effectiveUrl;
 
             if (!res.cached) {
                 ValidPathInfo info;