From ce4a4abaf25344a2ac0f56e13770bd49ab776aed Mon Sep 17 00:00:00 2001 From: brain Date: Mon, 26 Mar 2007 16:23:55 +0000 Subject: [PATCH] Fix bug reported by darix where inspircd process returns 15 for successful startup rather than the correct 0 git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6715 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/inspircd.h | 9 ++++++++- src/inspircd.cpp | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/inspircd.h b/include/inspircd.h index fc5a15da1..984122a18 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -727,12 +727,19 @@ class InspIRCd : public classbase */ static void Rehash(int status); - /** Causes the server to exit immediately + /** Causes the server to exit after unloading modules and + * closing all open file descriptors. + * * @param The exit code to give to the operating system * (See the ExitStatus enum for valid values) */ static void Exit(int status); + /** Causes the server to exit immediately with exit code 0. + * The status code is required for signal handlers, and ignored. + */ + static void QuickExit(int status); + /** Return a count of users, unknown and known connections * @return The number of users */ diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 6630cde5d..14bff2bef 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -220,6 +220,11 @@ void InspIRCd::SetSignals() signal(SIGCHLD, SIG_IGN); } +void InspIRCd::QuickExit(int status) +{ + exit(0); +} + bool InspIRCd::DaemonSeed() { int childpid; @@ -234,6 +239,7 @@ bool InspIRCd::DaemonSeed() * if the child pid is still around. If theyre not, * they threw an error and we should give up. */ + signal(SIGTERM, InspIRCd::QuickExit); while (kill(childpid, 0) != -1) sleep(1); exit(0); -- 2.39.5