nix-daemon: Simplify stderr handling

This commit is contained in:
Eelco Dolstra 2014-07-23 19:37:40 +02:00
parent 78224cd871
commit d0fad1779f
2 changed files with 2 additions and 7 deletions

View file

@ -850,6 +850,7 @@ pid_t startProcess(std::function<void()> fun, const string & errorPrefix)
if (pid == -1) throw SysError("unable to fork"); if (pid == -1) throw SysError("unable to fork");
if (pid == 0) { if (pid == 0) {
_writeToStderr = defaultWriteToStderr;
try { try {
restoreAffinity(); restoreAffinity();
fun(); fun();

View file

@ -29,7 +29,6 @@ static FdSource from(STDIN_FILENO);
static FdSink to(STDOUT_FILENO); static FdSink to(STDOUT_FILENO);
bool canSendStderr; bool canSendStderr;
pid_t myPid;
/* This function is called anytime we want to write something to /* This function is called anytime we want to write something to
@ -38,11 +37,7 @@ pid_t myPid;
socket. */ socket. */
static void tunnelStderr(const unsigned char * buf, size_t count) static void tunnelStderr(const unsigned char * buf, size_t count)
{ {
/* Don't send the message to the client if we're a child of the if (canSendStderr) {
process handling the connection. Otherwise we could screw up
the protocol. It's up to the parent to redirect stderr and
send it to the client somehow (e.g., as in build.cc). */
if (canSendStderr && myPid == getpid()) {
try { try {
writeInt(STDERR_NEXT, to); writeInt(STDERR_NEXT, to);
writeString(buf, count, to); writeString(buf, count, to);
@ -533,7 +528,6 @@ static void processConnection(bool trusted)
MonitorFdHup monitor(from.fd); MonitorFdHup monitor(from.fd);
canSendStderr = false; canSendStderr = false;
myPid = getpid();
_writeToStderr = tunnelStderr; _writeToStderr = tunnelStderr;
/* Exchange the greeting. */ /* Exchange the greeting. */