forked from lix-project/lix
nix-daemon: Simplify stderr handling
This commit is contained in:
parent
78224cd871
commit
d0fad1779f
|
@ -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();
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
Loading…
Reference in a new issue