summaryrefslogtreecommitdiff
path: root/src/userprocess.cpp
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-11-11 19:52:03 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-11-11 19:52:03 +0000
commit0f87ad0d4b97874823c94a5168a06dcd444ad559 (patch)
tree81b0aba7a008a140bf326608e6b6670b31b5c958 /src/userprocess.cpp
parent704c793d479f835180e9d89d82cd21a2c6c6521d (diff)
Add fine-grained command flood controls
This reintrouces "Excess Flood" quits for those that prefer it to fakelag, and allows the maximum command rate to be set in the connect block. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12093 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/userprocess.cpp')
-rw-r--r--src/userprocess.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/userprocess.cpp b/src/userprocess.cpp
index 8aa76a1fd..781f8ae52 100644
--- a/src/userprocess.cpp
+++ b/src/userprocess.cpp
@@ -55,9 +55,13 @@ void InspIRCd::DoBackgroundUserStuff()
if (curr->quitting)
continue;
- if (curr->Penalty)
+ if (curr->CommandFloodPenalty)
{
- curr->Penalty--;
+ unsigned int rate = curr->MyClass->GetCommandRate();
+ if (curr->CommandFloodPenalty > rate)
+ curr->CommandFloodPenalty -= rate;
+ else
+ curr->CommandFloodPenalty = 0;
curr->eh.OnDataReady();
}