summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/inspircd.h10
-rw-r--r--include/usermanager.h10
-rw-r--r--src/inspircd.cpp15
-rw-r--r--src/usermanager.cpp11
-rw-r--r--src/userprocess.cpp25
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;
}
}
}
-