aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/daemon.cc
diff options
context:
space:
mode:
authorRobert Hensing <roberth@users.noreply.github.com>2023-10-20 15:34:26 +0200
committereldritch horrors <pennae@lix.systems>2024-03-04 04:43:35 +0100
commitab40b2c5d0f90d6a119bf4b368f933f5331b0c15 (patch)
tree305c600d732546077701abefc9dddecdd2eadf0f /src/libstore/daemon.cc
parent5ddd1a916667ec0d969f99a0a85a2092bf18b632 (diff)
Merge pull request #9157 from obsidiansystems/protocol-versions
Add protocol versions to `{Worker,Serve}Proto::*Conn` (cherry picked from commit 4d17c59d8d059a5b39f1d1da2b58f2ec8da44861) Change-Id: I497af39deb792e50c157a1305d8c9e722798740b
Diffstat (limited to 'src/libstore/daemon.cc')
-rw-r--r--src/libstore/daemon.cc25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/libstore/daemon.cc b/src/libstore/daemon.cc
index 8cbf6f044..d61e97a64 100644
--- a/src/libstore/daemon.cc
+++ b/src/libstore/daemon.cc
@@ -45,9 +45,9 @@ struct TunnelLogger : public Logger
Sync<State> state_;
- unsigned int clientVersion;
+ WorkerProto::Version clientVersion;
- TunnelLogger(FdSink & to, unsigned int clientVersion)
+ TunnelLogger(FdSink & to, WorkerProto::Version clientVersion)
: to(to), clientVersion(clientVersion) { }
void enqueueMsg(const std::string & s)
@@ -261,7 +261,7 @@ struct ClientSettings
}
};
-static std::vector<DerivedPath> readDerivedPaths(Store & store, unsigned int clientVersion, WorkerProto::ReadConn conn)
+static std::vector<DerivedPath> readDerivedPaths(Store & store, WorkerProto::Version clientVersion, WorkerProto::ReadConn conn)
{
std::vector<DerivedPath> reqs;
if (GET_PROTOCOL_MINOR(clientVersion) >= 30) {
@@ -274,11 +274,17 @@ static std::vector<DerivedPath> readDerivedPaths(Store & store, unsigned int cli
}
static void performOp(TunnelLogger * logger, ref<Store> store,
- TrustedFlag trusted, RecursiveFlag recursive, unsigned int clientVersion,
+ TrustedFlag trusted, RecursiveFlag recursive, WorkerProto::Version clientVersion,
Source & from, BufferedSink & to, WorkerProto::Op op)
{
- WorkerProto::ReadConn rconn { .from = from };
- WorkerProto::WriteConn wconn { .to = to };
+ WorkerProto::ReadConn rconn {
+ .from = from,
+ .version = clientVersion,
+ };
+ WorkerProto::WriteConn wconn {
+ .to = to,
+ .version = clientVersion,
+ };
switch (op) {
@@ -1017,7 +1023,7 @@ void processConnection(
if (magic != WORKER_MAGIC_1) throw Error("protocol mismatch");
to << WORKER_MAGIC_2 << PROTOCOL_VERSION;
to.flush();
- unsigned int clientVersion = readInt(from);
+ WorkerProto::Version clientVersion = readInt(from);
if (clientVersion < 0x10a)
throw Error("the Nix client version is too old");
@@ -1052,7 +1058,10 @@ void processConnection(
auto temp = trusted
? store->isTrustedClient()
: std::optional { NotTrusted };
- WorkerProto::WriteConn wconn { .to = to };
+ WorkerProto::WriteConn wconn {
+ .to = to,
+ .version = clientVersion,
+ };
WorkerProto::write(*store, wconn, temp);
}