diff --git a/lix/libstore/build/derivation-goal.cc b/lix/libstore/build/derivation-goal.cc index 0cad92073..01972f6d9 100644 --- a/lix/libstore/build/derivation-goal.cc +++ b/lix/libstore/build/derivation-goal.cc @@ -1055,7 +1055,7 @@ try { KJ_DEFER(hook = nullptr); auto output = handleChildOutput(); - auto buildReq = hook->rpc.buildRequest(); + auto buildReq = hook->rpc->buildRequest(); RPC_FILL(buildReq, setAmWilling, slotToken.valid()); RPC_FILL(buildReq, setNeededSystem, drv->platform); RPC_FILL(buildReq, initDrvPath, drvPath, worker.store); @@ -1114,8 +1114,6 @@ try { // close the rpc connection to have the hook exit hook->rpc = nullptr; - hook->client = nullptr; - hook->conn = nullptr; if (auto error = TRY_AWAIT(output)) { co_return HookResult::Accept{std::move(*error)}; diff --git a/lix/libstore/build/hook-instance.cc b/lix/libstore/build/hook-instance.cc index 0f76d61fc..7e050d37e 100644 --- a/lix/libstore/build/hook-instance.cc +++ b/lix/libstore/build/hook-instance.cc @@ -7,6 +7,7 @@ #include "lix/libutil/rpc.hh" #include "lix/libutil/strings.hh" #include "lix/libutil/types-rpc.hh" // IWYU pragma: keep +#include #include namespace nix { @@ -76,9 +77,7 @@ try { co_return std::make_unique( std::move(fromHook_.readSide), - std::move(conn), - std::move(client), - std::move(rpc), + kj::heap(std::move(rpc)).attach(std::move(conn), std::move(client)), std::move(pid) ); } catch (...) { diff --git a/lix/libstore/build/hook-instance.hh b/lix/libstore/build/hook-instance.hh index 7d55d0a20..5bddf3ba7 100644 --- a/lix/libstore/build/hook-instance.hh +++ b/lix/libstore/build/hook-instance.hh @@ -19,24 +19,16 @@ struct HookInstance */ AutoCloseFD fromHook; - kj::Own conn; - std::unique_ptr client; - rpc::build_remote::HookInstance::Client rpc; + kj::Own rpc; std::map activities; static kj::Promise>> create(); HookInstance( - AutoCloseFD fromHook, - kj::Own conn, - std::unique_ptr client, - rpc::build_remote::HookInstance::Client rpc, - Pid pid + AutoCloseFD fromHook, kj::Own rpc, Pid pid ) : fromHook(std::move(fromHook)) - , conn(std::move(conn)) - , client(std::move(client)) , rpc(std::move(rpc)) , pidOrStatus(std::move(pid)) {