#include "helperfuncs.h"
#include "hashcomp.h"
#include "socketengine.h"
+#include "inspircd_se_config.h"
#include "userprocess.h"
#include "socket.h"
#include "typedefs.h"
extern int MODCOUNT;
extern char LOG_FILE[MAXBUF];
+
int iterations = 0;
insp_sockaddr client, server;
socklen_t length;
extern InspSocket* socket_ref[MAX_DESCRIPTORS];
-
time_t TIME = time(NULL), OLDTIME = time(NULL);
// This table references users by file descriptor.
// 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;
char lowermap[255];
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++)
/* 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 */
/* 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);
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);