X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fserver.cpp;h=f259e44359a8fefdd02992bceb12e4c4be9b74bd;hb=bb35a0fa9cbebe51fa636f707c12ca4a7033dd9a;hp=2ab452fc8cb50f401d1370cb8e3d80492c342565;hpb=77b0de3fedf130ce0d3b50bb2a2e8d98dcf5d3f4;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/server.cpp b/src/server.cpp index 2ab452fc8..f259e4435 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -11,22 +11,49 @@ * --------------------------------------------------- */ +#include +#include "exitcodes.h" #include "inspircd.h" -void InspIRCd::Rehash(int status) + +void InspIRCd::SignalHandler(int signal) +{ + switch (signal) + { + case SIGHUP: + Rehash(); + break; + case SIGTERM: + Exit(signal); + break; + } +} + +void InspIRCd::Exit(int status) +{ +#ifdef WINDOWS + delete WindowsIPC; +#endif + if (this) + { + this->SendError("Exiting with status " + ConvToStr(status) + " (" + std::string(ExitCodes[status]) + ")"); + this->Cleanup(); + } + exit (status); +} + +void InspIRCd::Rehash() { -/* - SI->WriteOpers("*** Rehashing config file %s due to SIGHUP",ServerConfig::CleanFilename(SI->ConfigFileName)); - SI->CloseLog(); - SI->OpenLog(SI->Config->argv, SI->Config->argc); - SI->RehashUsersAndChans(); - FOREACH_MOD_I(SI, I_OnGarbageCollect, OnGarbageCollect()); - SI->Config->Read(false,NULL); - SI->ResetMaxBans(); - SI->Res->Rehash(); - FOREACH_MOD_I(SI,I_OnRehash,OnRehash(NULL,"")); - SI->BuildISupport(); -*/ + this->WriteOpers("*** Rehashing config file %s due to SIGHUP",ServerConfig::CleanFilename(this->ConfigFileName)); + this->CloseLog(); + this->OpenLog(this->Config->argv, this->Config->argc); + this->RehashUsersAndChans(); + FOREACH_MOD_I(this, I_OnGarbageCollect, OnGarbageCollect()); + this->Config->Read(false,NULL); + this->ResetMaxBans(); + this->Res->Rehash(); + FOREACH_MOD_I(this,I_OnRehash,OnRehash(NULL,"")); + this->BuildISupport(); } void InspIRCd::RehashServer()