]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
irc::stringjoiner cleanup
[user/henk/code/inspircd.git] / src / inspircd.cpp
index bd15624739eee4c40e54cf3af8e6c1db35085927..775e6f13012bd2e25fb02e223f49b5de11a193d0 100644 (file)
@@ -62,7 +62,6 @@
 #include "testsuite.h"
 
 InspIRCd* ServerInstance = NULL;
-int* mysig = NULL;
 
 /** Seperate from the other casemap tables so that code *can* still exclusively rely on RFC casemapping
  * if it must.
@@ -132,8 +131,6 @@ void InspIRCd::Cleanup()
        /* Must be deleted before modes as it decrements modelines */
        if (FakeClient)
                FakeClient->cull();
-       if (Res)
-               Res->cull();
        DeleteZero(this->FakeClient);
        DeleteZero(this->Users);
        DeleteZero(this->Modes);
@@ -144,7 +141,6 @@ void InspIRCd::Cleanup()
        DeleteZero(this->BanCache);
        DeleteZero(this->SNO);
        DeleteZero(this->Config);
-       DeleteZero(this->Res);
        DeleteZero(this->chanlist);
        DeleteZero(this->PI);
        DeleteZero(this->Threads);
@@ -309,7 +305,6 @@ InspIRCd::InspIRCd(int argc, char** argv) :
        this->Parser = 0;
        this->XLines = 0;
        this->Modes = 0;
-       this->Res = 0;
        this->ConfigThread = NULL;
        this->FakeClient = NULL;
 
@@ -326,8 +321,6 @@ InspIRCd::InspIRCd(int argc, char** argv) :
        /* Default implementation does nothing */
        this->PI = new ProtocolInterface;
 
-       this->s_signal = 0;
-
        // Create base manager classes early, so nothing breaks
        this->Users = new UserManager;
 
@@ -512,27 +505,12 @@ InspIRCd::InspIRCd(int argc, char** argv) :
        Logs->OpenFileLogs();
        ModeParser::InitBuiltinModes();
 
-       this->Res = new DNS();
-
-       /*
-        * Initialise SID/UID.
-        * For an explanation as to exactly how this works, and why it works this way, see GetUID().
-        *   -- w00t
-        */
+       // If we don't have a SID, generate one based on the server name and the server description
        if (Config->sid.empty())
-       {
-               // Generate one
-               unsigned int sid = 0;
-               char sidstr[4];
-
-               for (const char* x = Config->ServerName.c_str(); *x; ++x)
-                       sid = 5 * sid + *x;
-               for (const char* y = Config->ServerDesc.c_str(); *y; ++y)
-                       sid = 5 * sid + *y;
-               sprintf(sidstr, "%03d", sid % 1000);
+               Config->sid = UIDGenerator::GenerateSID(Config->ServerName, Config->ServerDesc);
 
-               Config->sid = sidstr;
-       }
+       // Initialize the UID generator with our sid
+       this->UIDGen.init(Config->sid);
 
        /* set up fake client again this time with the correct uid */
        this->FakeClient = new FakeUser(Config->sid, Config->ServerName);
@@ -806,10 +784,10 @@ int InspIRCd::Run()
                GlobalCulls.Apply();
                AtomicActions.Run();
 
-               if (this->s_signal)
+               if (s_signal)
                {
                        this->SignalHandler(s_signal);
-                       this->s_signal = 0;
+                       s_signal = 0;
                }
        }
 
@@ -818,10 +796,6 @@ int InspIRCd::Run()
 
 /**********************************************************************************/
 
-/**
- * An ircd in five lines! bwahahaha. ahahahahaha. ahahah *cough*.
- */
-
 /* this returns true when all modules are satisfied that the user should be allowed onto the irc server
  * (until this returns true, a user will block in the waiting state, waiting to connect up to the
  * registration timeout maximum seconds)
@@ -833,9 +807,11 @@ bool InspIRCd::AllModulesReportReady(LocalUser* user)
        return (res == MOD_RES_PASSTHRU);
 }
 
+sig_atomic_t InspIRCd::s_signal = 0;
+
 void InspIRCd::SetSignal(int signal)
 {
-       *mysig = signal;
+       s_signal = signal;
 }
 
 /* On posix systems, the flow of the program starts right here, with
@@ -847,7 +823,6 @@ void InspIRCd::SetSignal(int signal)
 ENTRYPOINT
 {
        new InspIRCd(argc, argv);
-       mysig = &ServerInstance->s_signal;
        ServerInstance->Run();
        delete ServerInstance;
        return 0;