From eadd5cce87ff5d17a3506bc0750e21e3d5035143 Mon Sep 17 00:00:00 2001 From: peavey Date: Wed, 25 Jul 2007 19:46:25 +0000 Subject: Rehash from console works again due to new signalhandler. TODO: Use this to catch SIGTERM and exit cleanly. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7571 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/inspircd.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/inspircd.cpp') diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 449bb005b..240db1c88 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -152,6 +152,7 @@ using irc::sockets::insp_inaddr; using irc::sockets::insp_sockaddr; InspIRCd* SI = NULL; +int* mysig = NULL; /* Burlex: Moved from exitcodes.h -- due to duplicate symbols */ const char* ExitCodes[] = @@ -305,7 +306,7 @@ void InspIRCd::SetSignals() { #ifndef WIN32 signal(SIGALRM, SIG_IGN); - signal(SIGHUP, InspIRCd::Rehash); + signal(SIGHUP, InspIRCd::SetSignal); signal(SIGPIPE, SIG_IGN); signal(SIGCHLD, SIG_IGN); #endif @@ -411,6 +412,8 @@ InspIRCd::InspIRCd(int argc, char** argv) memset(&server, 0, sizeof(server)); memset(&client, 0, sizeof(client)); + this->s_signal = 0; + this->unregistered_count = 0; this->clientlist = new user_hash(); @@ -704,6 +707,13 @@ void InspIRCd::DoOneIteration(bool process_module_sockets) /* If any inspsockets closed, remove them */ this->InspSocketCull(); + + if (this->s_signal) + { + this->SignalHandler(s_signal); + this->s_signal = 0; + } + } void InspIRCd::InspSocketCull() @@ -736,6 +746,7 @@ int InspIRCd::Run() int main(int argc, char** argv) { SI = new InspIRCd(argc, argv); + mysig = &SI->s_signal; SI->Run(); delete SI; return 0; @@ -804,3 +815,9 @@ int InspIRCd::GetTimeDelta() { return time_delta; } + +void InspIRCd::SetSignal(int signal) +{ + *mysig = signal; +} + -- cgit v1.3.1-10-gc9f91