1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2024-09-19 23:03:53 -04:00

Allow HTTP binary cache to request absolute uris

This commit is contained in:
Domen Kožar 2020-09-01 16:41:42 +02:00
parent 6d7f7efb89
commit dd4b56c87f
No known key found for this signature in database
GPG key ID: C2FFBCAFD2C24246

View file

@ -85,7 +85,7 @@ protected:
checkEnabled(); checkEnabled();
try { try {
FileTransferRequest request(cacheUri + "/" + path); FileTransferRequest request(makeRequest(path));
request.head = true; request.head = true;
getFileTransfer()->download(request); getFileTransfer()->download(request);
return true; return true;
@ -103,7 +103,7 @@ protected:
std::shared_ptr<std::basic_iostream<char>> istream, std::shared_ptr<std::basic_iostream<char>> istream,
const std::string & mimeType) override const std::string & mimeType) override
{ {
auto req = FileTransferRequest(cacheUri + "/" + path); auto req = makeRequest(path);
req.data = std::make_shared<string>(StreamToSourceAdapter(istream).drain()); req.data = std::make_shared<string>(StreamToSourceAdapter(istream).drain());
req.mimeType = mimeType; req.mimeType = mimeType;
try { try {
@ -115,8 +115,11 @@ protected:
FileTransferRequest makeRequest(const std::string & path) FileTransferRequest makeRequest(const std::string & path)
{ {
FileTransferRequest request(cacheUri + "/" + path); return FileTransferRequest(
return request; hasPrefix(path, "https://") || hasPrefix(path, "http://") || hasPrefix(path, "file://")
? path
: cacheUri + "/" + path);
} }
void getFile(const std::string & path, Sink & sink) override void getFile(const std::string & path, Sink & sink) override