diff --git a/CHANGES b/CHANGES index 9dc33cb..71d96f8 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,9 @@ corrections: endian systems due to wrong byte order (thanks to Peter M. Galbavy for bug report and patch) + Debian bug 531078: socat execs children with SIGCHLD ignored; corrected + to default. Thanks to Martin Dorey for reporting this bug. + porting: building socat on systems that predefined the CFLAGS environment to contain -Wall failed (esp.RedHat). Thanks to Paul Wouters for reporting diff --git a/VERSION b/VERSION index 7612391..dd97b59 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -"1.7.1.1+64bit+userlate+reneg+sockshtons" +"1.7.1.1+64bit+userlate+reneg+sockshtons+subsigchld" diff --git a/xio-progcall.c b/xio-progcall.c index 281039d..a544abd 100644 --- a/xio-progcall.c +++ b/xio-progcall.c @@ -414,8 +414,10 @@ int _xioopen_foxec(int xioflags, /* XIO_RDONLY etc. */ gid_t group; if (withfork) { - if (Signal(SIGCHLD, SIG_IGN) == SIG_ERR) { - Warn1("signal(SIGCHLD, SIG_IGN): %s", strerror(errno)); + /* The child should have default handling for SIGCHLD. */ + /* In particular, it's not defined whether ignoring SIGCHLD is inheritable. */ + if (Signal(SIGCHLD, SIG_DFL) == SIG_ERR) { + Warn1("signal(SIGCHLD, SIG_DFL): %s", strerror(errno)); } #if HAVE_PTY