]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Add <server:id> - this is optional, as stated in the example conf,
[user/henk/code/inspircd.git] / src / inspircd.cpp
index 995f62f1b9b91c46791fd1a28f13a4a0c20255fe..1618266c04b239f2f193bcbe3d5ae6eccd9ea54c 100644 (file)
@@ -12,7 +12,6 @@
  */
 
 #include "inspircd.h"
-#include "configreader.h"
 #include <signal.h>
 
 #ifndef WIN32
        #endif
 #endif
 
-#include <exception>
 #include <fstream>
-#include "modules.h"
-#include "mode.h"
 #include "xline.h"
 #include "socketengine.h"
 #include "inspircd_se_config.h"
 #include "socket.h"
-#include "typedefs.h"
 #include "command_parse.h"
 #include "exitcodes.h"
 #include "caller.h"
@@ -165,9 +160,11 @@ void InspIRCd::ResetMaxBans()
 void InspIRCd::RehashUsersAndChans()
 {
        user_hash* old_users = this->clientlist;
+       user_hash* old_uuid  = this->uuidlist;
        chan_hash* old_chans = this->chanlist;
 
        this->clientlist = new user_hash();
+       this->uuidlist = new user_hash();
        this->chanlist = new chan_hash();
 
        for (user_hash::const_iterator n = old_users->begin(); n != old_users->end(); n++)
@@ -175,6 +172,11 @@ void InspIRCd::RehashUsersAndChans()
 
        delete old_users;
 
+       for (user_hash::const_iterator n = old_uuid->begin(); n != old_uuid->end(); n++)
+               this->uuidlist->insert(*n);
+
+       delete old_uuid;
+
        for (chan_hash::const_iterator n = old_chans->begin(); n != old_chans->end(); n++)
                this->chanlist->insert(*n);
 
@@ -316,6 +318,7 @@ InspIRCd::InspIRCd(int argc, char** argv)
        this->unregistered_count = 0;
 
        this->clientlist = new user_hash();
+       this->uuidlist = new user_hash();
        this->chanlist = new chan_hash();
 
        this->Config = new ServerConfig(this);
@@ -541,11 +544,20 @@ InspIRCd::InspIRCd(int argc, char** argv)
 
        /* Generate SID */
         size_t sid = 0;
-       for (const char* x = Config->ServerName; *x; ++x)
-               sid = 5 * sid + *x;
-       for (const char* y = Config->ServerDesc; *y; ++y)
-               sid = 5 * sid + *y;
-       sid = sid % 999;
+       if (Config->sid)
+       {
+               sid = Config->sid;
+       }
+       else
+       {
+               for (const char* x = Config->ServerName; *x; ++x)
+                       sid = 5 * sid + *x;
+               for (const char* y = Config->ServerDesc; *y; ++y)
+                       sid = 5 * sid + *y;
+               sid = sid % 999;
+
+               Config->sid = sid;
+       }
        current_uid[0] = sid / 100 + 48;
        current_uid[1] = ((sid / 10) % 10) + 48;
        current_uid[2] = sid % 10 + 48;