]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Adjust m_mysql to match the assumed behaviour of m_pgsql exactly, e.g. when there...
[user/henk/code/inspircd.git] / src / inspircd.cpp
index b7e0e7d935bf81e40634c1459f32b75d14afdc00..b9cd9f36c072340e7bc3b803dda80ed925dd64a9 100644 (file)
@@ -63,6 +63,7 @@
 #include "helperfuncs.h"
 #include "hashcomp.h"
 #include "socketengine.h"
+#include "inspircd_se_config.h"
 #include "userprocess.h"
 #include "socket.h"
 #include "typedefs.h"
@@ -78,6 +79,7 @@ std::vector<userrec*> local_users;
 
 extern int MODCOUNT;
 extern char LOG_FILE[MAXBUF];
+
 int iterations = 0;
 
 insp_sockaddr client, server;
@@ -90,10 +92,8 @@ time_t TIME = time(NULL), OLDTIME = time(NULL);
 // its an array to make it VERY fast, as all lookups are referenced
 // by an integer, meaning there is no need for a scan/search operation.
 userrec* fd_ref_table[MAX_DESCRIPTORS];
-
 Server* MyServer = new Server;
 ServerConfig *Config = new ServerConfig;
-
 user_hash clientlist;
 chan_hash chanlist;
 servernamelist servernames;
@@ -295,13 +295,14 @@ InspIRCd::InspIRCd(int argc, char** argv)
 
        OpenLog(argv, argc);
        this->stats = new serverstats();
+       this->Parser = new CommandParser();
        Config->ClearStack();
        Config->Read(true,NULL);
        CheckRoot();
        this->ModeGrok = new ModeParser();
-       this->Parser = new CommandParser();
        AddServerName(Config->ServerName);
        CheckDie();
+       InitializeDisabledCommands(Config->DisabledCommands, this);
        stats->BoundPortCount = BindPorts(true);
 
        for(int t = 0; t < 255; t++)
@@ -323,7 +324,9 @@ InspIRCd::InspIRCd(int argc, char** argv)
        /* Because of limitations in kqueue on freebsd, we must fork BEFORE we
         * initialize the socket engine.
         */
-       SE = new SocketEngine();
+       SocketEngineFactory* SEF = new SocketEngineFactory();
+       SE = SEF->Create();
+       delete SEF;
 
        /* We must load the modules AFTER initializing the socket engine, now */
 
@@ -920,7 +923,7 @@ int InspIRCd::Run()
        /* Add the listening sockets used for client inbound connections
         * to the socket engine
         */
-       for (int count = 0; count < stats->BoundPortCount; count++)
+       for (unsigned long count = 0; count < stats->BoundPortCount; count++)
                SE->AddFd(Config->openSockfd[count],true,X_LISTEN);
 
        this->WritePID(Config->PID);
@@ -945,6 +948,61 @@ int InspIRCd::Run()
 
 int main(int argc, char** argv)
 {
+       /* TEST SUITE FOR TOKENSTREAM
+        *
+        * Expected output:
+        * 
+        * String: 'PRIVMSG #test FOO BAR'
+        * Token 0 = 'PRIVMSG'
+        * Token 1 = '#test'
+        * Token 2 = 'FOO'
+        * Token 3 = 'BAR'
+        * String: 'PRIVMSG #test :FOO BAR BAZ'
+        * Token 0 = 'PRIVMSG'
+        * Token 1 = '#test'
+        * Token 2 = 'FOO BAR BAZ'
+        * String: ':PRIVMSG #test :FOO BAR BAZ'
+        * Token 0 = ':PRIVMSG'
+        * String: 'AAAAAAA'
+        * Token 0 = 'AAAAAAA'
+        * String: ''
+        * NumItems = 0
+        *
+       std::string a = "PRIVMSG #test FOO BAR";
+       printf("String: '%s'\n",a.c_str());
+       irc::tokenstream test(a);
+       printf("Token 0 = '%s'\n",test.GetToken().c_str());
+       printf("Token 1 = '%s'\n",test.GetToken().c_str());
+       printf("Token 2 = '%s'\n",test.GetToken().c_str());
+       printf("Token 3 = '%s'\n",test.GetToken().c_str());
+       printf("Token 4 = '%s'\n",test.GetToken().c_str());
+
+       std::string b = "PRIVMSG #test :FOO BAR BAZ";
+       printf("String: '%s'\n",b.c_str());
+       irc::tokenstream test2(b);
+       printf("Token 0 = '%s'\n",test2.GetToken().c_str());
+       printf("Token 1 = '%s'\n",test2.GetToken().c_str());
+       printf("Token 2 = '%s'\n",test2.GetToken().c_str());
+       printf("Token 3 = '%s'\n",test2.GetToken().c_str());
+
+       std::string c = ":PRIVMSG #test :FOO BAR BAZ";
+       printf("String: '%s'\n",c.c_str());
+       irc::tokenstream test3(c);
+       printf("Token 0 = '%s'\n",test3.GetToken().c_str());
+
+       c = "AAAAAAA";
+       printf("String: '%s'\n",c.c_str());
+       irc::tokenstream test4(c);
+       printf("Token 0 = '%s'\n",test4.GetToken().c_str());
+       printf("Token 1 = '%s'\n",test4.GetToken().c_str());
+
+       c = "";
+       printf("String: '%s'\n",c.c_str());
+       irc::tokenstream test5(c);
+       printf("Token 0 = '%s'\n",test5.GetToken().c_str());
+
+       exit(0);
+       */
        try
        {
                ServerInstance = new InspIRCd(argc, argv);