@@ -972,26 +972,24 @@ struct curlFileTransfer : public FileTransfer
972972 return ItemHandle (item.get_ptr ());
973973 }
974974
975- ItemHandle
976- enqueueFileTransfer (const FileTransferRequest & request, Callback<FileTransferResult> callback) noexcept override
975+ inline ref<TransferItem>
976+ makeTransferItem (const FileTransferRequest & request, Callback<FileTransferResult> callback) noexcept
977977 {
978978 /* Handle s3:// URIs by converting to HTTPS and optionally adding auth */
979979 if (request.uri .scheme () == " s3" ) {
980980 auto modifiedRequest = request;
981981 modifiedRequest.setupForS3 ();
982- auto item = make_ref<TransferItem>(*this , std::move (modifiedRequest), std::move (callback));
983- try {
984- return enqueueItem (item);
985- } catch (const nix::BaseError & e) {
986- // NOTE(cole-h): catches both nix::Error and nix::Interrupted -- enqueueItem calls
987- // writeFull which may throw nix::Interrupted, and the rest of enqueueItem may throw
988- // nix::Error
989- item->fail (e);
990- return ItemHandle (item.get_ptr ());
991- }
982+ return make_ref<TransferItem>(*this , std::move (modifiedRequest), std::move (callback));
983+ } else {
984+ return make_ref<TransferItem>(*this , request, std::move (callback));
992985 }
986+ }
987+
988+ ItemHandle
989+ enqueueFileTransfer (const FileTransferRequest & request, Callback<FileTransferResult> callback) noexcept override
990+ {
991+ const auto item = makeTransferItem (request, std::move (callback));
993992
994- auto item = make_ref<TransferItem>(*this , request, std::move (callback));
995993 try {
996994 return enqueueItem (item);
997995 } catch (const nix::BaseError & e) {
0 commit comments