Skip to content

Commit a6402da

Browse files
committed
filetransfer: handle exceptions thrown from enqueueItem
1 parent 6e229e0 commit a6402da

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

src/libstore/filetransfer.cc

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

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

980992
void unpauseTransfer(ref<TransferItem> item)

0 commit comments

Comments
 (0)