]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/userprocess.cpp
Optimisation of optimisation :P ty w00tie
[user/henk/code/inspircd.git] / src / userprocess.cpp
index 5452b8f9e36bbd1191833a570381bd8a193dab8c..76be62d71bd82557968815cba4cecfd7c11d1c76 100644 (file)
@@ -70,6 +70,7 @@ extern std::vector<InspSocket*> module_sockets;
 extern time_t TIME;
 extern time_t OLDTIME;
 extern std::vector<userrec*> local_users;
+char LOG_FILE[MAXBUF];
 
 extern InspIRCd* ServerInstance;
 extern ServerConfig *Config;
@@ -88,8 +89,16 @@ void ProcessUser(userrec* cu)
        if (Config->GetIOHook(cu->port))
        {
                int result2 = 0;
-               int MOD_RESULT = Config->GetIOHook(cu->port)->OnRawSocketRead(cu->fd,data,65535,result2);
-                log(DEBUG,"Data result returned by module: %d",MOD_RESULT);
+               int MOD_RESULT = 0;
+               try
+               {
+                       MOD_RESULT = Config->GetIOHook(cu->port)->OnRawSocketRead(cu->fd,data,65535,result2);
+                       log(DEBUG,"Data result returned by module: %d",MOD_RESULT);
+               }
+                catch (ModuleException& modexcept)
+                {
+                        log(DEBUG,"Module exception cought: %s",modexcept.GetReason()); \
+                }
                if (MOD_RESULT < 0)
                {
                        result = -EAGAIN;
@@ -207,14 +216,7 @@ void ProcessUser(userrec* cu)
                                 std::string single_line = current->GetBuffer();
                                 current->bytes_in += single_line.length();
                                 current->cmds_in++;
-                                if (single_line.length()>512)
-                                {
-                                        log(DEFAULT,"Excess flood from: %s!%s@%s",current->nick,current->ident,current->host);
-                                        WriteOpers("*** Excess flood from: %s!%s@%s",current->nick,current->ident,current->host);
-                                        kill_link(current,"Excess flood");
-                                        return;
-                                }
-                                strlcpy(sanitized,single_line.c_str(),MAXBUF);
+                                strlcpy(sanitized,single_line.c_str(),511);
                                 if (*sanitized)
                                 {
                                         userrec* old_comp = fd_ref_table[currfd];
@@ -356,9 +358,22 @@ void DoBackgroundUserStuff(time_t TIME)
 
 void OpenLog(char** argv, int argc)
 {
-       if (Config->logpath == "")
+       if (!*LOG_FILE)
        {
-               Config->logpath = GetFullProgDir(argv,argc) + "/ircd.log";
+               if (Config->logpath == "")
+               {
+                       Config->logpath = GetFullProgDir(argv,argc) + "/ircd.log";
+               }
+       }
+       else
+       {
+               Config->log_file = fopen(LOG_FILE,"a+");
+               if (!Config->log_file)
+               {
+                       printf("ERROR: Could not write to logfile %s, bailing!\n\n",Config->logpath.c_str());
+                       Exit(ERROR);
+               }
+               return;
        }
         Config->log_file = fopen(Config->logpath.c_str(),"a+");
         if (!Config->log_file)
@@ -398,11 +413,11 @@ void LoadAllModules(InspIRCd* ServerInstance)
         for (int count = 0; count < Config->ConfValueEnum("module",&Config->config_f); count++)
         {
                 Config->ConfValue("module","name",count,configToken,&Config->config_f);
-                printf("Loading module... \033[1;32m%s\033[0m\n",configToken);
+                printf("[\033[1;32m*\033[0m] Loading module:\t\033[1;32m%s\033[0m\n",configToken);
                 if (!ServerInstance->LoadModule(configToken))
                 {
                         log(DEFAULT,"Exiting due to a module loader error.");
-                        printf("\nThere was an error loading a module: %s\n\nYou might want to do './inspircd start' instead of 'bin/inspircd'\n\n",ServerInstance->ModuleError());
+                        printf("\nThere was an error loading a module: %s\n\n",ServerInstance->ModuleError());
                         Exit(0);
                 }
         }