Merge pull request #11600 from DeterminateSystems/fix-uncaught-exception

HttpBinaryCacheStore::getFile(): Fix uncaught exception
This commit is contained in:
Eelco Dolstra 2024-09-27 12:37:12 +02:00 committed by GitHub
commit 08deebddf2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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();
}
}});
} }
/** /**