X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Finspircd.cpp;h=b6c25210427d450168a98a6b95714bc9842e41b9;hb=d4a1ea70451abb333e71f9cff09b624db59531a0;hp=8ebdc3b58958bcf8c2a2fd5dc69c6f4bcea829d0;hpb=765abf3a41551590219bc8bd4be80b3ff6ba6053;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 8ebdc3b58..b6c252104 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -47,7 +47,6 @@ #include #include "xline.h" #include "exitcodes.h" -#include "testsuite.h" InspIRCd* ServerInstance = NULL; @@ -78,13 +77,6 @@ const char* ExitCodes[] = "Received SIGTERM" // 10 }; -#ifdef INSPIRCD_ENABLE_TESTSUITE -/** True if we have been told to run the testsuite from the commandline, - * rather than entering the mainloop. - */ -static int do_testsuite = 0; -#endif - template static void DeleteZero(T*&n) { T* t = n; @@ -102,6 +94,12 @@ void InspIRCd::Cleanup() } ports.clear(); + // Disconnect all local users + const std::string quitmsg = "Server shutting down"; + const UserManager::LocalList& list = Users.GetLocalUsers(); + while (!list.empty()) + ServerInstance->Users.QuitUser(list.front(), quitmsg); + GlobalCulls.Apply(); Modules->UnloadAll(); @@ -271,6 +269,16 @@ InspIRCd::InspIRCd(int argc, char** argv) : srandom(TIME.tv_nsec ^ TIME.tv_sec); #endif + { + ServiceProvider* provs[] = + { + &rfcevents.numeric, &rfcevents.join, &rfcevents.part, &rfcevents.kick, &rfcevents.quit, &rfcevents.nick, + &rfcevents.mode, &rfcevents.topic, &rfcevents.privmsg, &rfcevents.invite, &rfcevents.ping, &rfcevents.pong, + &rfcevents.error + }; + Modules.AddServices(provs, sizeof(provs)/sizeof(provs[0])); + } + struct option longopts[] = { { "nofork", no_argument, &do_nofork, 1 }, @@ -280,9 +288,6 @@ InspIRCd::InspIRCd(int argc, char** argv) : { "nopid", no_argument, &do_nopid, 1 }, { "runasroot", no_argument, &do_root, 1 }, { "version", no_argument, &do_version, 1 }, -#ifdef INSPIRCD_ENABLE_TESTSUITE - { "testsuite", no_argument, &do_testsuite, 1 }, -#endif { 0, 0, 0, 0 } }; @@ -320,11 +325,6 @@ InspIRCd::InspIRCd(int argc, char** argv) : } } -#ifdef INSPIRCD_ENABLE_TESTSUITE - if (do_testsuite) - do_nofork = do_debug = true; -#endif - if (do_version) { std::cout << std::endl << INSPIRCD_VERSION << std::endl; @@ -432,7 +432,6 @@ InspIRCd::InspIRCd(int argc, char** argv) : // Build ISupport as ModuleManager::LoadAll() does not do it this->ISupport.Build(); - Config->ApplyDisabledCommands(); if (!pl.empty()) { @@ -576,16 +575,6 @@ void InspIRCd::UpdateTime() void InspIRCd::Run() { -#ifdef INSPIRCD_ENABLE_TESTSUITE - /* See if we're supposed to be running the test suite rather than entering the mainloop */ - if (do_testsuite) - { - TestSuite* ts = new TestSuite; - delete ts; - return; - } -#endif - UpdateTime(); time_t OLDTIME = TIME.tv_sec; @@ -634,14 +623,15 @@ void InspIRCd::Run() } #endif - /* Allow a buffer of two seconds drift on this so that ntpdate etc dont harass admins */ - if (TIME.tv_sec < OLDTIME - 2) - { - SNO->WriteToSnoMask('d', "\002EH?!\002 -- Time is flowing BACKWARDS in this dimension! Clock drifted backwards %lu secs.", (unsigned long)(OLDTIME-TIME.tv_sec)); - } - else if (TIME.tv_sec > OLDTIME + 2) + if (Config->TimeSkipWarn) { - SNO->WriteToSnoMask('d', "\002EH?!\002 -- Time is jumping FORWARDS! Clock skipped %lu secs.", (unsigned long)(TIME.tv_sec - OLDTIME)); + time_t timediff = TIME.tv_sec - OLDTIME; + + if (timediff > Config->TimeSkipWarn) + SNO->WriteToSnoMask('a', "\002Performance warning!\002 Server clock jumped forwards by %lu seconds!", timediff); + + else if (timediff < -Config->TimeSkipWarn) + SNO->WriteToSnoMask('a', "\002Performance warning!\002 Server clock jumped backwards by %lu seconds!", labs(timediff)); } OLDTIME = TIME.tv_sec;