Ignore the enforceDeterminism value

We used to set enforceDeterminism to true in the settings (by default)
and thus did send a non-zero value over the wire. The value should
probably be ignored as it should only matter if nrRounds is non-zero
as well.

Having the old code here where the value is expected to be zero only
works with the same version of Nix where we are sending zero. We
should always test this against older Nix versions being client or
server as otherwise upgrade in larger networks might be a pain.

Fixes 8e0946e8df
This commit is contained in:
Andreas Rammhold 2022-12-10 11:26:59 +01:00
parent 145e9a8123
commit dbc8547664

View file

@ -808,12 +808,15 @@ static void opServe(Strings opFlags, Strings opArgs)
if (GET_PROTOCOL_MINOR(clientVersion) >= 2)
settings.maxLogSize = readNum<unsigned long>(in);
if (GET_PROTOCOL_MINOR(clientVersion) >= 3) {
if (readInt(in) != 0) {
auto nrRepeats = readInt(in);
if (nrRepeats != 0) {
throw Error("client requested repeating builds, but this is not currently implemented");
}
if (readInt(in) != 0) {
throw Error("client requested enforcing determinism, but this is not currently implemented");
}
// Ignore. It used to be true by default, but also only never had any effect when `nrRepeats == 0`.
// We have already asserted that `nrRepeats` in fact is 0, so we can safely ignore this without
// doing something other than what the client asked for.
auto _enforceDeterminism = readInt(in);
settings.runDiffHook = true;
}
if (GET_PROTOCOL_MINOR(clientVersion) >= 7) {