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 == 0) {
_writeToStderr = defaultWriteToStderr;
try {
restoreAffinity();
fun();

View file

@ -29,7 +29,6 @@ static FdSource from(STDIN_FILENO);
static FdSink to(STDOUT_FILENO);
bool canSendStderr;
pid_t myPid;
/* This function is called anytime we want to write something to
@ -38,11 +37,7 @@ pid_t myPid;
socket. */
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
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()) {
if (canSendStderr) {
try {
writeInt(STDERR_NEXT, to);
writeString(buf, count, to);
@ -533,7 +528,6 @@ static void processConnection(bool trusted)
MonitorFdHup monitor(from.fd);
canSendStderr = false;
myPid = getpid();
_writeToStderr = tunnelStderr;
/* Exchange the greeting. */