X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fuserprocess.cpp;h=fae96721df0f4f09f72d5398935b85ff0dcc9a4c;hb=59b1a8955142935b02af6446005ab47fc7c3fc8c;hp=2599361532975d6de0d17cc0a206e3b0d0a22b2a;hpb=f42e73185f4e5d82c0fd3ee51b224774210658d1;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/userprocess.cpp b/src/userprocess.cpp index 259936153..fae96721d 100644 --- a/src/userprocess.cpp +++ b/src/userprocess.cpp @@ -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::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::iterator count2 = local_users.begin(); count2 != local_users.end(); count2++) {