]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Add m_chanhistory, mode +H <lines> to replay some lines of history on channel join
[user/henk/code/inspircd.git] / src / inspircd.cpp
index 4956cfa8cca384f61de6b65b898a3eefc7fb5e82..c591097245aeeaa0a075c6d7f586c5552af6f752 100644 (file)
@@ -111,22 +111,8 @@ void InspIRCd::Cleanup()
                Users->QuitUser(u, "Server shutdown");
        }
 
-       /* We do this more than once, so that any service providers get a
-        * chance to be unhooked by the modules using them, but then get
-        * a chance to be removed themsleves.
-        *
-        * XXX there may be a better way to do this
-        */
-       for (int tries = 0; tries < 4; tries++)
-       {
-               std::vector<std::string> module_names = Modules->GetAllModuleNames(0);
-               for (std::vector<std::string>::iterator k = module_names.begin(); k != module_names.end(); ++k)
-               {
-                       /* Unload all modules, so they get a chance to clean up their listeners */
-                       this->Modules->Unload(k->c_str());
-               }
-               GlobalCulls.Apply();
-       }
+       GlobalCulls.Apply();
+       Modules->UnloadAll();
 
        /* Delete objects dynamically allocated in constructor (destructor would be more appropriate, but we're likely exiting) */
        /* Must be deleted before modes as it decrements modelines */
@@ -273,12 +259,10 @@ bool InspIRCd::DaemonSeed()
                this->Logs->Log("STARTUP",DEFAULT,"Failed to getrlimit()!");
                return false;
        }
-       else
-       {
-               rl.rlim_cur = rl.rlim_max;
-               if (setrlimit(RLIMIT_CORE, &rl) == -1)
+       rl.rlim_cur = rl.rlim_max;
+
+       if (setrlimit(RLIMIT_CORE, &rl) == -1)
                        this->Logs->Log("STARTUP",DEFAULT,"setrlimit() failed, cannot increase coredump size.");
-       }
 
        return true;
 #endif
@@ -330,8 +314,8 @@ InspIRCd::InspIRCd(int argc, char** argv) :
 
        ServerInstance = this;
 
-       Extensible::Register(&NICKForced);
-       Extensible::Register(&OperQuit);
+       Extensions.Register(&NICKForced);
+       Extensions.Register(&OperQuit);
 
        FailedPortList pl;
        int do_version = 0, do_nofork = 0, do_debug = 0,
@@ -790,7 +774,8 @@ int InspIRCd::Run()
                this->SE->DispatchEvents();
 
                /* if any users were quit, take them out */
-               this->GlobalCulls.Apply();
+               GlobalCulls.Apply();
+               AtomicActions.Run();
 
                if (this->s_signal)
                {