Commit 51f85719 authored by Pieter Hintjens's avatar Pieter Hintjens

Simplified fdpair reset after fork

parent 2be70dca
...@@ -181,8 +181,7 @@ int zmq::signaler_t::wait (int timeout_) ...@@ -181,8 +181,7 @@ int zmq::signaler_t::wait (int timeout_)
return -1; return -1;
} }
#ifdef HAVE_FORK #ifdef HAVE_FORK
if (unlikely(pid != getpid())) if (unlikely(pid != getpid())) {
{
// we have forked and the file descriptor is closed. Emulate an interupt // we have forked and the file descriptor is closed. Emulate an interupt
// response. // response.
//printf("Child process %d signaler_t::wait returning simulating interrupt #2\n", getpid()); //printf("Child process %d signaler_t::wait returning simulating interrupt #2\n", getpid());
...@@ -263,23 +262,10 @@ void zmq::signaler_t::recv () ...@@ -263,23 +262,10 @@ void zmq::signaler_t::recv ()
#ifdef HAVE_FORK #ifdef HAVE_FORK
void zmq::signaler_t::forked() void zmq::signaler_t::forked()
{ {
int oldr = r; // Close file descriptors created in the parent and create new pair
#if !defined ZMQ_HAVE_EVENTFD close (r);
int oldw = w; close (w);
#endif
// replace the file descriptors created in the parent with new
// ones, and close the inherited ones
make_fdpair (&r, &w); make_fdpair (&r, &w);
#if defined ZMQ_HAVE_EVENTFD
int rc = close (oldr);
errno_assert (rc == 0);
#else
int rc = close (oldw);
errno_assert (rc == 0);
rc = close (oldr);
errno_assert (rc == 0);
#endif
} }
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment