aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-07-23 19:26:34 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-07-23 19:26:34 +0200
commit78224cd871e7ce9af628836995620abcb70e6935 (patch)
treeb7a48fcf7e4da0c3ee0a766cfce708f4a1886c98
parent49fe9592a47e7819179c2de4fd6068e897e944c7 (diff)
nix-store --serve: Monitor for client disconnects
This is necessary because build-remote.pl now builds via ‘nix-store --serve’. So if a build hangs without writing to stdout/stderr, and the client disconnects, then we need to detect that.
-rw-r--r--src/nix-store/nix-store.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/nix-store/nix-store.cc b/src/nix-store/nix-store.cc
index 048f5c603..25a955e09 100644
--- a/src/nix-store/nix-store.cc
+++ b/src/nix-store/nix-store.cc
@@ -8,6 +8,7 @@
#include "util.hh"
#include "serve-protocol.hh"
#include "worker-protocol.hh"
+#include "monitor-fd.hh"
#include <iostream>
#include <algorithm>
@@ -879,6 +880,8 @@ static void opServe(Strings opFlags, Strings opArgs)
FdSource in(STDIN_FILENO);
FdSink out(STDOUT_FILENO);
+ MonitorFdHup monitor(in.fd);
+
/* Exchange the greeting. */
unsigned int magic = readInt(in);
if (magic != SERVE_MAGIC_1) throw Error("protocol mismatch");