diff --git a/lix/libstore/filetransfer.cc b/lix/libstore/filetransfer.cc index aa3311aaf..cc1443320 100644 --- a/lix/libstore/filetransfer.cc +++ b/lix/libstore/filetransfer.cc @@ -801,6 +801,7 @@ struct curlFileTransfer : public FileTransfer } auto source = make_box_ptr(*this, uri, headers, std::move(data), noBody); + source->init(); source->awaitData(); co_return {source->metadata, std::move(source)}; } catch (...) { @@ -838,8 +839,6 @@ struct curlFileTransfer : public FileTransfer , data(std::move(data)) , noBody(noBody) { - auto setup = [&] { return startTransfer(uri); }; - metadata = withRetries(setup, setup); } ~TransferSource() @@ -854,6 +853,12 @@ struct curlFileTransfer : public FileTransfer } } + void init() + { + auto setup = [&] { return startTransfer(uri); }; + metadata = withRetries(setup, setup); + } + auto withRetries(auto && initial, auto && retry) -> decltype(initial()) { std::optional retryContext;