diff options
-rw-r--r-- | include/inspircd.h | 10 | ||||
-rw-r--r-- | include/usermanager.h | 10 | ||||
-rw-r--r-- | src/inspircd.cpp | 15 | ||||
-rw-r--r-- | src/usermanager.cpp | 11 | ||||
-rw-r--r-- | src/userprocess.cpp | 25 |
5 files changed, 32 insertions, 39 deletions
diff --git a/include/inspircd.h b/include/inspircd.h index f86945903..22a0bfaa5 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -270,16 +270,6 @@ class CoreExport InspIRCd */ void DoSocketTimeouts(time_t TIME); - /** Perform background user events such as PING checks - */ - void DoBackgroundUserStuff(); - - /** Returns true when all modules have done pre-registration checks on a user - * @param user The user to verify - * @return True if all modules have finished checking this user - */ - bool AllModulesReportReady(LocalUser* user); - /** The current time, updated in the mainloop */ struct timespec TIME; diff --git a/include/usermanager.h b/include/usermanager.h index f5df25f00..86978b3b3 100644 --- a/include/usermanager.h +++ b/include/usermanager.h @@ -81,6 +81,16 @@ class CoreExport UserManager */ void GarbageCollect(); + /** Perform background user events such as PING checks + */ + void DoBackgroundUserStuff(); + + /** Returns true when all modules have done pre-registration checks on a user + * @param user The user to verify + * @return True if all modules have finished checking this user + */ + bool AllModulesReportReady(LocalUser* user); + /** Add a client to the system. * This will create a new User, insert it into the user_hash, * initialize it as not yet registered, and add it to the socket engine. diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 0e4a6646f..c40c5fb00 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -748,7 +748,7 @@ int InspIRCd::Run() } Timers->TickTimers(TIME.tv_sec); - this->DoBackgroundUserStuff(); + Users->DoBackgroundUserStuff(); if ((TIME.tv_sec % 5) == 0) { @@ -781,19 +781,6 @@ int InspIRCd::Run() return 0; } -/**********************************************************************************/ - -/* this returns true when all modules are satisfied that the user should be allowed onto the irc server - * (until this returns true, a user will block in the waiting state, waiting to connect up to the - * registration timeout maximum seconds) - */ -bool InspIRCd::AllModulesReportReady(LocalUser* user) -{ - ModResult res; - FIRST_MOD_RESULT(OnCheckReady, res, (user)); - return (res == MOD_RES_PASSTHRU); -} - sig_atomic_t InspIRCd::s_signal = 0; void InspIRCd::SetSignal(int signal) diff --git a/src/usermanager.cpp b/src/usermanager.cpp index d6c61d2e3..df1d5f9f1 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -362,3 +362,14 @@ void UserManager::GarbageCollect() (**i).RemoveExpiredInvites(); } } + +/* this returns true when all modules are satisfied that the user should be allowed onto the irc server + * (until this returns true, a user will block in the waiting state, waiting to connect up to the + * registration timeout maximum seconds) + */ +bool UserManager::AllModulesReportReady(LocalUser* user) +{ + ModResult res; + FIRST_MOD_RESULT(OnCheckReady, res, (user)); + return (res == MOD_RES_PASSTHRU); +} diff --git a/src/userprocess.cpp b/src/userprocess.cpp index 40fd35c59..8a0be3126 100644 --- a/src/userprocess.cpp +++ b/src/userprocess.cpp @@ -33,16 +33,14 @@ * It is intended to do background checking on all the user structs, e.g. * stuff like ping checks, registration timeouts, etc. */ -void InspIRCd::DoBackgroundUserStuff() +void UserManager::DoBackgroundUserStuff() { /* * loop over all local users.. */ - LocalUserList::reverse_iterator count2 = this->Users->local_users.rbegin(); - while (count2 != this->Users->local_users.rend()) + for (LocalUserList::iterator i = local_users.begin(); i != local_users.end(); ++i) { - LocalUser *curr = *count2; - count2++; + LocalUser* curr = *i; if (curr->quitting) continue; @@ -60,22 +58,20 @@ void InspIRCd::DoBackgroundUserStuff() switch (curr->registered) { case REG_ALL: - if (Time() > curr->nping) + if (ServerInstance->Time() > curr->nping) { // This user didn't answer the last ping, remove them if (!curr->lastping) { - time_t time = this->Time() - (curr->nping - curr->MyClass->GetPingTime()); + time_t time = ServerInstance->Time() - (curr->nping - curr->MyClass->GetPingTime()); const std::string message = "Ping timeout: " + ConvToStr(time) + (time == 1 ? " seconds" : " second"); - curr->lastping = 1; - curr->nping = Time() + curr->MyClass->GetPingTime(); - this->Users->QuitUser(curr, message); + this->QuitUser(curr, message); continue; } - curr->Write("PING :%s",this->Config->ServerName.c_str()); + curr->Write("PING :" + ServerInstance->Config->ServerName); curr->lastping = 0; - curr->nping = Time() +curr->MyClass->GetPingTime(); + curr->nping = ServerInstance->Time() + curr->MyClass->GetPingTime(); } break; case REG_NICKUSER: @@ -88,15 +84,14 @@ void InspIRCd::DoBackgroundUserStuff() break; } - if (curr->registered != REG_ALL && (Time() > (curr->age + curr->MyClass->GetRegTimeout()))) + if (curr->registered != REG_ALL && (ServerInstance->Time() > (curr->age + curr->MyClass->GetRegTimeout()))) { /* * registration timeout -- didnt send USER/NICK/HOST * in the time specified in their connection class. */ - this->Users->QuitUser(curr, "Registration timeout"); + this->QuitUser(curr, "Registration timeout"); continue; } } } - |