guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

86/376: nix-store --serve: Only monitor stdin during builds


From: Ludovic Courtès
Subject: 86/376: nix-store --serve: Only monitor stdin during builds
Date: Wed, 28 Jan 2015 22:04:13 +0000

civodul pushed a commit to tag 1.8
in repository guix.

commit d7a92ed4a9faf8237322166656a2639d787cdeec
Author: Eelco Dolstra <address@hidden>
Date:   Thu Jul 24 11:52:52 2014 +0200

    nix-store --serve: Only monitor stdin during builds
    
    Other operations cannot hang indefinitely (except when we're reading
    from stdin, in which case we'll notice a client disconnect). But
    monitoring works badly during compressed imports, since there the
    client can close the connection before we've sent an ack.
    
    http://hydra.nixos.org/build/12711638
---
 src/nix-store/nix-store.cc |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/nix-store/nix-store.cc b/src/nix-store/nix-store.cc
index 25a955e..42012f2 100644
--- a/src/nix-store/nix-store.cc
+++ b/src/nix-store/nix-store.cc
@@ -880,8 +880,6 @@ 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");
@@ -1002,6 +1000,7 @@ static void opServe(Strings opFlags, Strings opArgs)
             }
 
             case cmdBuildPaths: {
+
                 /* Used by build-remote.pl. */
                 if (!writeAllowed) throw Error("building paths is not 
allowed");
                 PathSet paths = readStorePaths<PathSet>(in);
@@ -1016,6 +1015,7 @@ static void opServe(Strings opFlags, Strings opArgs)
 
                 int res = 0;
                 try {
+                    MonitorFdHup monitor(in.fd);
                     store->buildPaths(paths);
                 } catch (Error & e) {
                     printMsg(lvlError, format("error: %1%") % e.msg());



reply via email to

[Prev in Thread] Current Thread [Next in Thread]