From 1674c21da1f2539806250982dc91ac7ad8a24984 Mon Sep 17 00:00:00 2001 From: brain Date: Wed, 8 Feb 2006 17:22:12 +0000 Subject: Increased how often socket timeout checks occur which will mean flushing write buffers more often git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3142 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/userprocess.h | 1 + src/inspircd.cpp | 7 +++++++ 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::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::iterator count2 = local_users.begin(); count2 != local_users.end(); count2++) { -- cgit v1.2.3