X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Finspircd.cpp;h=f35482f618a975d48373385b31f4cf5edd8fde73;hb=687778b72e31322a73b2e2e17af6bd0f2a2561bc;hp=94132cf95135e0956c2ebe84383494c5ecc3dcca;hpb=bf046f87c8d322939c6a883a405056003b8b1abd;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 94132cf95..f35482f61 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -30,7 +30,6 @@ #include #ifndef _WIN32 - #include #include #include #include @@ -94,6 +93,15 @@ void InspIRCd::Cleanup() } ports.clear(); + // Tell modules that we're shutting down. + const std::string quitmsg = "Server shutting down"; + FOREACH_MOD(OnShutdown, (quitmsg)); + + // Disconnect all local users + const UserManager::LocalList& list = Users.GetLocalUsers(); + while (!list.empty()) + ServerInstance->Users.QuitUser(list.front(), quitmsg); + GlobalCulls.Apply(); Modules->UnloadAll(); @@ -115,10 +123,11 @@ void InspIRCd::SetSignals() { #ifndef _WIN32 signal(SIGALRM, SIG_IGN); + signal(SIGCHLD, SIG_IGN); signal(SIGHUP, InspIRCd::SetSignal); signal(SIGPIPE, SIG_IGN); - signal(SIGCHLD, SIG_IGN); - /* We want E2BIG not a signal! */ + signal(SIGUSR1, SIG_IGN); + signal(SIGUSR2, SIG_IGN); signal(SIGXFSZ, SIG_IGN); #endif signal(SIGTERM, InspIRCd::SetSignal); @@ -184,9 +193,7 @@ void InspIRCd::WritePID(const std::string& filename, bool exitonfail) return; } - std::string fname(filename); - if (fname.empty()) - fname = ServerInstance->Config->Paths.PrependData("inspircd.pid"); + std::string fname = ServerInstance->Config->Paths.PrependData(filename.empty() ? "inspircd.pid" : filename); std::ofstream outfile(fname.c_str()); if (outfile.is_open()) {