diff options
-rw-r--r-- | include/userprocess.h | 1 | ||||
-rw-r--r-- | src/inspircd.cpp | 7 | ||||
-rw-r--r-- | src/userprocess.cpp | 20 |
3 files changed, 20 insertions, 8 deletions
diff --git a/include/userprocess.h b/include/userprocess.h index bcfe5a355..cc3d713a0 100644 --- a/include/userprocess.h +++ b/include/userprocess.h @@ -10,5 +10,6 @@ void CheckRoot(); void OpenLog(char** argv, int argc); void DoBackgroundUserStuff(time_t TIME); void ProcessUser(userrec* cu); +void DoSocketTimeouts(time_t TIME); #endif diff --git a/src/inspircd.cpp b/src/inspircd.cpp index dc7a1cfb0..80960d151 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -646,6 +646,13 @@ int InspIRCd::Run() DoBackgroundUserStuff(TIME); } + /* Process timeouts on module sockets each time around + * the loop. There shouldnt be many module sockets, at + * most, 20 or so, so this won't be much of a performance + * hit at all. + */ + DoSocketTimeouts(TIME); + /* Call the socket engine to wait on the active * file descriptors. The socket engine has everything's * descriptors in its list... dns, modules, users, diff --git a/src/userprocess.cpp b/src/userprocess.cpp index 259936153..5452b8f9e 100644 --- a/src/userprocess.cpp +++ b/src/userprocess.cpp @@ -259,16 +259,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 +277,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++) { |