summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2006-03-22 18:53:20 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2006-03-22 18:53:20 +0000
commitdefe8a08990319d19931413fade9b70605b944a3 (patch)
tree3341158b3230ee7407d41897b31caf8b95a37f2a
parent0e962ce7dd6b5111dc3baf9cee8b73aa67895690 (diff)
Removal of software threading idea in CullList. Nice idea, but did really whacked out things with a lot of sockets.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3749 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/cull_list.cpp29
1 files changed, 6 insertions, 23 deletions
diff --git a/src/cull_list.cpp b/src/cull_list.cpp
index 74400ef1b..20454c155 100644
--- a/src/cull_list.cpp
+++ b/src/cull_list.cpp
@@ -52,6 +52,9 @@ using namespace std;
extern InspIRCd* ServerInstance;
extern user_hash clientlist;
+/*
+ * In current implementation of CullList, this isn't used. It did odd things with a lot of sockets.
+ */
bool CullList::IsValid(userrec* user)
{
time_t esignon = 0;
@@ -139,29 +142,9 @@ int CullList::Apply()
while (list.size())
{
std::vector<CullItem>::iterator a = list.begin();
- userrec* u = a->GetUser();
- /* Because ServerInstance->DoOneIteration can
- * take the user away from us in the middle of
- * our operation, we should check to see if this
- * pointer is still valid by iterating the hash.
- * It's expensive, yes, but the DoOneIteration
- * call stops it being horrendously bad.
- */
- if (IsValid(u))
- {
- kill_link(u,a->GetReason().c_str());
- list.erase(list.begin());
- /* So that huge numbers of quits dont block,
- * we yield back to our mainloop every 15
- * iterations.
- * The DoOneIteration call basically acts
- * like a software threading mechanism.
- */
- if (((n++) % 15) == 0)
- {
- ServerInstance->DoOneIteration(false);
- }
- }
+
+ kill_link(a->GetUser(), a->GetReason().c_str());
+ list.erase(list.begin());
}
return n;
}