From ddea253ff8312bf1d2559999c4dd8d9cc3e5b240 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 20 Apr 2016 15:28:07 +0200 Subject: RemoteStore: Propagate InvalidPath exceptions from the daemon --- src/nix-daemon/nix-daemon.cc | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'src/nix-daemon/nix-daemon.cc') diff --git a/src/nix-daemon/nix-daemon.cc b/src/nix-daemon/nix-daemon.cc index dfb5da4ad527..efc67b6a8755 100644 --- a/src/nix-daemon/nix-daemon.cc +++ b/src/nix-daemon/nix-daemon.cc @@ -495,15 +495,23 @@ static void performOp(ref store, bool trusted, unsigned int clientVe case wopQueryPathInfo: { Path path = readStorePath(from); + std::shared_ptr info; startWork(); - auto info = store->queryPathInfo(path); - stopWork(); - to << info->deriver << printHash(info->narHash) << info->references - << info->registrationTime << info->narSize; - if (GET_PROTOCOL_MINOR(clientVersion) >= 16) { - to << info->ultimate - << info->sigs; + try { + info = store->queryPathInfo(path); + } catch (InvalidPath &) { + if (GET_PROTOCOL_MINOR(clientVersion) < 17) throw; } + stopWork(); + if (info) { + to << 1 << info->deriver << printHash(info->narHash) << info->references + << info->registrationTime << info->narSize; + if (GET_PROTOCOL_MINOR(clientVersion) >= 16) { + to << info->ultimate + << info->sigs; + } + } else + to << 0; break; } -- cgit 1.4.1