]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/userprocess.cpp
Tweaks to closed socket detection
[user/henk/code/inspircd.git] / src / userprocess.cpp
index 5452b8f9e36bbd1191833a570381bd8a193dab8c..d40ba494bcf43eb2be66e9c66a5687e972b83994 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;
@@ -356,9 +365,22 @@ void DoBackgroundUserStuff(time_t TIME)
 
 void OpenLog(char** argv, int argc)
 {
-       if (Config->logpath == "")
+       if (!*LOG_FILE)
+       {
+               if (Config->logpath == "")
+               {
+                       Config->logpath = GetFullProgDir(argv,argc) + "/ircd.log";
+               }
+       }
+       else
        {
-               Config->logpath = GetFullProgDir(argv,argc) + "/ircd.log";
+               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)