aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/http-binary-cache-store.cc
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-15 15:11:34 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-15 15:39:48 +0200
commitd1b0909894a302540f979d904dd378af1cad620c (patch)
tree691ec2d838e4449897549a537145971d9b12a3d5 /src/libstore/http-binary-cache-store.cc
parent99851c6f06c80fe2222c5e5fcef963804e907170 (diff)
BinaryCacheStore::readFile(): Return a shared_ptr to a string
This allows readFile() to indicate that a file doesn't exist, and might eliminate some large string copying.
Diffstat (limited to 'src/libstore/http-binary-cache-store.cc')
-rw-r--r--src/libstore/http-binary-cache-store.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libstore/http-binary-cache-store.cc b/src/libstore/http-binary-cache-store.cc
index 8a719db15..6dcea1cbf 100644
--- a/src/libstore/http-binary-cache-store.cc
+++ b/src/libstore/http-binary-cache-store.cc
@@ -58,12 +58,18 @@ protected:
throw Error("uploading to an HTTP binary cache is not supported");
}
- std::string getFile(const std::string & path) override
+ std::shared_ptr<std::string> getFile(const std::string & path) override
{
auto downloader(downloaders.get());
DownloadOptions options;
options.showProgress = DownloadOptions::no;
- return downloader->download(cacheUri + "/" + path, options).data;
+ try {
+ return downloader->download(cacheUri + "/" + path, options).data;
+ } catch (DownloadError & e) {
+ if (e.error == Downloader::NotFound || e.error == Downloader::Forbidden)
+ return 0;
+ throw;
+ }
}
};