Skip to content

Commit 2208cf9

Browse files
committed
filetransfer: handle exceptions thrown from enqueueItem
1 parent b80d320 commit 2208cf9

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

src/libstore/filetransfer.cc

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -972,10 +972,22 @@ struct curlFileTransfer : public FileTransfer
972972
if (request.uri.scheme() == "s3") {
973973
auto modifiedRequest = request;
974974
modifiedRequest.setupForS3();
975-
return enqueueItem(make_ref<TransferItem>(*this, std::move(modifiedRequest), std::move(callback)));
975+
auto item = make_ref<TransferItem>(*this, std::move(modifiedRequest), std::move(callback));
976+
try {
977+
return enqueueItem(item);
978+
} catch (const nix::Error & e) {
979+
item->fail(e);
980+
return ItemHandle(static_cast<Item &>(*item));
981+
}
976982
}
977983

978-
return enqueueItem(make_ref<TransferItem>(*this, request, std::move(callback)));
984+
auto item = make_ref<TransferItem>(*this, request, std::move(callback));
985+
try {
986+
return enqueueItem(item);
987+
} catch (const nix::Error & e) {
988+
item->fail(e);
989+
return ItemHandle(static_cast<Item &>(*item));
990+
}
979991
}
980992

981993
void unpauseTransfer(ref<TransferItem> item)

0 commit comments

Comments
 (0)