]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/userprocess.cpp
Decide that it wasn't quite appropriate :(
[user/henk/code/inspircd.git] / src / userprocess.cpp
index 2599361532975d6de0d17cc0a206e3b0d0a22b2a..fae96721df0f4f09f72d5398935b85ff0dcc9a4c 100644 (file)
@@ -88,8 +88,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;
@@ -259,16 +267,10 @@ void ProcessUser(userrec* cu)
         }
 }
 
-/**
- * This function is called once a second from the mainloop.
- * It is intended to do background checking on all the user structs, e.g.
- * stuff like ping checks, registration timeouts, etc. This function is
- * also responsible for checking if InspSocket derived classes are timed out.
- */
-void DoBackgroundUserStuff(time_t TIME)
+void DoSocketTimeouts(time_t TIME)
 {
         unsigned int numsockets = module_sockets.size();
-       SocketEngine* SE = ServerInstance->SE;
+        SocketEngine* SE = ServerInstance->SE;
         for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++)
         {
                 InspSocket* s = (InspSocket*)*a;
@@ -283,6 +285,16 @@ void DoBackgroundUserStuff(time_t TIME)
                 }
                 if (module_sockets.size() != numsockets) break;
         }
+}
+
+/**
+ * This function is called once a second from the mainloop.
+ * It is intended to do background checking on all the user structs, e.g.
+ * stuff like ping checks, registration timeouts, etc. This function is
+ * also responsible for checking if InspSocket derived classes are timed out.
+ */
+void DoBackgroundUserStuff(time_t TIME)
+{
         CullList* GlobalGoners = new CullList();
         for (std::vector<userrec*>::iterator count2 = local_users.begin(); count2 != local_users.end(); count2++)
         {