]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Merge insp20
[user/henk/code/inspircd.git] / src / inspircd.cpp
index 553e09b73f189a944719336ad2f6fe4c7e907390..5d4d8081f02772909c4b1a5cd934fc16da05bf43 100644 (file)
@@ -108,11 +108,6 @@ void InspIRCd::Cleanup()
        }
        ports.clear();
 
-       /* Close all client sockets, or the new process inherits them */
-       LocalUserList& list = Users->local_users;
-       for (LocalUserList::iterator i = list.begin(); i != list.end(); ++i)
-               Users->QuitUser(*i, "Server shutdown");
-
        GlobalCulls.Apply();
        Modules->UnloadAll();
 
@@ -124,9 +119,7 @@ void InspIRCd::Cleanup()
                FakeClient->cull();
        }
        DeleteZero(this->FakeClient);
-       DeleteZero(this->Users);
        DeleteZero(this->XLines);
-       DeleteZero(this->SNO);
        DeleteZero(this->Config);
        SocketEngine::Deinit();
        Logs->CloseLogs();
@@ -201,7 +194,7 @@ bool InspIRCd::DaemonSeed()
 #endif
 }
 
-void InspIRCd::WritePID(const std::string &filename)
+void InspIRCd::WritePID(const std::string& filename, bool exitonfail)
 {
 #ifndef _WIN32
        std::string fname(filename);
@@ -215,9 +208,11 @@ void InspIRCd::WritePID(const std::string &filename)
        }
        else
        {
-               std::cout << "Failed to write PID-file '" << fname << "', exiting." << std::endl;
-               this->Logs->Log("STARTUP", LOG_DEFAULT, "Failed to write PID-file '%s', exiting.",fname.c_str());
-               Exit(EXIT_STATUS_PID);
+               if (exitonfail)
+                       std::cout << "Failed to write PID-file '" << fname << "', exiting." << std::endl;
+               this->Logs->Log("STARTUP", LOG_DEFAULT, "Failed to write PID-file '%s'%s", fname.c_str(), (exitonfail ? ", exiting." : ""));
+               if (exitonfail)
+                       Exit(EXIT_STATUS_PID);
        }
 #endif
 }
@@ -231,7 +226,7 @@ InspIRCd::InspIRCd(int argc, char** argv) :
          * THIS MUST MATCH THE ORDER OF DECLARATION OF THE FUNCTORS, e.g. the methods
          * themselves within the class.
          */
-        OperQuit("operquit", NULL),
+        OperQuit("operquit", ExtensionItem::EXT_USER, NULL),
         GenRandom(&HandleGenRandom),
         IsChannel(&HandleIsChannel),
         IsNick(&HandleIsNick),
@@ -248,9 +243,7 @@ InspIRCd::InspIRCd(int argc, char** argv) :
            do_nolog = 0, do_root = 0;
 
        // Initialize so that if we exit before proper initialization they're not deleted
-       this->Users = 0;
        this->Config = 0;
-       this->SNO = 0;
        this->XLines = 0;
        this->ConfigThread = NULL;
        this->FakeClient = NULL;
@@ -260,11 +253,7 @@ InspIRCd::InspIRCd(int argc, char** argv) :
 
        SocketEngine::Init();
 
-       // Create base manager classes early, so nothing breaks
-       this->Users = new UserManager;
-
        this->Config = new ServerConfig;
-       this->SNO = new SnomaskManager;
        dynamic_reference_base::reset_all();
        this->XLines = new XLineManager;
 
@@ -379,13 +368,8 @@ InspIRCd::InspIRCd(int argc, char** argv) :
                }
        }
 
-       std::cout << con_green << "Inspire Internet Relay Chat Server" << con_reset << ", compiled on " __DATE__ " at " __TIME__ << std::endl;
-       std::cout << con_green << "(C) InspIRCd Development Team." << con_reset << std::endl << std::endl;
-       std::cout << "Developers:" << std::endl;
-       std::cout << con_green << "\tBrain, FrostyCoolSlug, w00t, Om, Special, peavey" << std::endl;
-       std::cout << "\taquanight, psychon, dz, danieldg, jackmcbarn" << std::endl;
-       std::cout << "\tAttila" << con_reset << std::endl << std::endl;
-       std::cout << "Others:\t\t\t" << con_green << "See /INFO Output" << con_reset << std::endl;
+       std::cout << con_green << "InspIRCd - Internet Relay Chat Daemon" << con_reset << ", compiled on " __DATE__ " at " __TIME__ << std::endl;
+       std::cout << "For contributors & authors: " << con_green << "See /INFO Output" << con_reset << std::endl;
 
 #ifndef _WIN32
        if (!do_root)
@@ -667,20 +651,17 @@ void InspIRCd::Run()
                        /* 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);
+                               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)
                        {
-                               SNO->WriteToSnoMask('d', "\002EH?!\002 -- Time is jumping FORWARDS! Clock skipped %lu secs.", (unsigned long)TIME.tv_sec - OLDTIME);
+                               SNO->WriteToSnoMask('d', "\002EH?!\002 -- Time is jumping FORWARDS! Clock skipped %lu secs.", (unsigned long)(TIME.tv_sec - OLDTIME));
                        }
 
                        OLDTIME = TIME.tv_sec;
 
                        if ((TIME.tv_sec % 3600) == 0)
-                       {
-                               Users->GarbageCollect();
                                FOREACH_MOD(OnGarbageCollect, ());
-                       }
 
                        Timers.TickTimers(TIME.tv_sec);
                        Users->DoBackgroundUserStuff();