diff options
author | Adam <Adam@anope.org> | 2011-10-27 15:09:31 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-10-27 15:09:31 -0400 |
commit | 39ac438b8d70d525e765a1864e7655cfea77fdc8 (patch) | |
tree | d7f8da33258415aa863d2d12a587d05d30110ac5 /src/init.cpp | |
parent | 0761a4a692e63333d608f2bed829c7d3ea24026a (diff) |
Ignore sigchld/usr2 sent to the child process after fork
Diffstat (limited to 'src/init.cpp')
-rw-r--r-- | src/init.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/init.cpp b/src/init.cpp index bcf49f00b..866b51388 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -249,6 +249,8 @@ void Fork() } #ifndef _WIN32 +static bool in_parent = false; + class SignalForkExit : public Signal { public: @@ -256,6 +258,9 @@ class SignalForkExit : public Signal void OnNotify() { + if (!in_parent) + return; + quitting = true; return_code = 0; } @@ -268,6 +273,9 @@ class SignalSigChld : public Signal void OnNotify() { + if (!in_parent) + return; + quitting = true; return_code = -1; int status = 0; @@ -414,6 +422,7 @@ void Init(int ac, char **av) int i = fork(); if (i > 0) { + in_parent = true; while (!quitting) { Log(LOG_DEBUG_3) << "Top of fork() process loop"; |