mirror of
https://github.com/NixOS/nix.git
synced 2024-11-22 14:52:55 +00:00
Merge pull request #11600 from DeterminateSystems/fix-uncaught-exception
HttpBinaryCacheStore::getFile(): Fix uncaught exception
This commit is contained in:
commit
08deebddf2
@ -169,28 +169,29 @@ protected:
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
checkEnabled();
|
checkEnabled();
|
||||||
|
|
||||||
|
auto request(makeRequest(path));
|
||||||
|
|
||||||
|
auto callbackPtr = std::make_shared<decltype(callback)>(std::move(callback));
|
||||||
|
|
||||||
|
getFileTransfer()->enqueueFileTransfer(request,
|
||||||
|
{[callbackPtr, this](std::future<FileTransferResult> result) {
|
||||||
|
try {
|
||||||
|
(*callbackPtr)(std::move(result.get().data));
|
||||||
|
} catch (FileTransferError & e) {
|
||||||
|
if (e.error == FileTransfer::NotFound || e.error == FileTransfer::Forbidden)
|
||||||
|
return (*callbackPtr)({});
|
||||||
|
maybeDisable();
|
||||||
|
callbackPtr->rethrow();
|
||||||
|
} catch (...) {
|
||||||
|
callbackPtr->rethrow();
|
||||||
|
}
|
||||||
|
}});
|
||||||
|
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
callback.rethrow();
|
callback.rethrow();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto request(makeRequest(path));
|
|
||||||
|
|
||||||
auto callbackPtr = std::make_shared<decltype(callback)>(std::move(callback));
|
|
||||||
|
|
||||||
getFileTransfer()->enqueueFileTransfer(request,
|
|
||||||
{[callbackPtr, this](std::future<FileTransferResult> result) {
|
|
||||||
try {
|
|
||||||
(*callbackPtr)(std::move(result.get().data));
|
|
||||||
} catch (FileTransferError & e) {
|
|
||||||
if (e.error == FileTransfer::NotFound || e.error == FileTransfer::Forbidden)
|
|
||||||
return (*callbackPtr)({});
|
|
||||||
maybeDisable();
|
|
||||||
callbackPtr->rethrow();
|
|
||||||
} catch (...) {
|
|
||||||
callbackPtr->rethrow();
|
|
||||||
}
|
|
||||||
}});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user