summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/command_parse.cpp2
-rw-r--r--src/modules/m_operflood.cpp41
-rw-r--r--src/userprocess.cpp2
-rw-r--r--src/users.cpp6
4 files changed, 5 insertions, 46 deletions
diff --git a/src/command_parse.cpp b/src/command_parse.cpp
index 886824d20..1b91a86ef 100644
--- a/src/command_parse.cpp
+++ b/src/command_parse.cpp
@@ -352,7 +352,7 @@ bool CommandParser::ProcessCommand(User *user, std::string &cmd)
/* Modify the user's penalty */
bool do_more = true;
- if (!user->ExemptFromPenalty)
+ if (!user->HasPrivPermission("users/flood/no-throttle"))
{
user->IncreasePenalty(cm->second->Penalty);
do_more = (user->Penalty < 10);
diff --git a/src/modules/m_operflood.cpp b/src/modules/m_operflood.cpp
deleted file mode 100644
index d7c651c06..000000000
--- a/src/modules/m_operflood.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-/* +------------------------------------+
- * | Inspire Internet Relay Chat Daemon |
- * +------------------------------------+
- *
- * InspIRCd: (C) 2002-2008 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
- *
- * This program is free but copyrighted software; see
- * the file COPYING for details.
- *
- * ---------------------------------------------------
- */
-
-#include "inspircd.h"
-
-/* $ModDesc: Removes flood limits from users upon opering up. */
-class ModuleOperFlood : public Module
-{
-public:
- ModuleOperFlood(InspIRCd * Me) : Module(Me)
- {
- Implementation eventlist[] = { I_OnPostOper };
- ServerInstance->Modules->Attach(eventlist, this, 1);
- }
-
- Version GetVersion()
- {
- return Version("$Id$", VF_VENDOR, API_VERSION);
- }
-
- void OnPostOper(User* user, const std::string &opertype, const std::string &opername)
- {
- if(!IS_LOCAL(user))
- return;
-
- user->ExemptFromPenalty = true;
- user->WriteServ("NOTICE %s :*** You are now free from flood limits.", user->nick.c_str());
- }
-};
-
-MODULE_INIT(ModuleOperFlood)
diff --git a/src/userprocess.cpp b/src/userprocess.cpp
index 1f6eac6e9..a529f4476 100644
--- a/src/userprocess.cpp
+++ b/src/userprocess.cpp
@@ -131,7 +131,7 @@ void ProcessUserHandler::Call(User* cu)
}
/* If user is over penalty, dont process here, just build up */
- if (!curr->Penalty < 10)
+ if (!current->Penalty < 10)
Server->Parser->DoLines(current);
return;
diff --git a/src/users.cpp b/src/users.cpp
index 18ab02837..48e0bcd12 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -214,7 +214,7 @@ User::User(InspIRCd* Instance, const std::string &uid) : ServerInstance(Instance
Penalty = 0;
lines_in = lastping = signon = idle_lastmsg = nping = registered = 0;
bytes_in = bytes_out = cmds_in = cmds_out = 0;
- quietquit = ExemptFromPenalty = quitting = exempt = haspassed = dns_done = false;
+ quietquit = quitting = exempt = haspassed = dns_done = false;
fd = -1;
recvq.clear();
sendq.clear();
@@ -613,7 +613,7 @@ bool User::AddBuffer(const std::string &a)
}
}
- if (this->MyClass && (recvq.length() > this->MyClass->GetRecvqMax()))
+ if (this->MyClass && !this->HasPrivPermission("users/flood/increased-buffers") && recvq.length() > this->MyClass->GetRecvqMax())
{
ServerInstance->Users->QuitUser(this, "RecvQ exceeded");
ServerInstance->SNO->WriteToSnoMask('A', "User %s RecvQ of %lu exceeds connect class maximum of %lu",this->nick.c_str(),(unsigned long int)recvq.length(),this->MyClass->GetRecvqMax());
@@ -678,7 +678,7 @@ void User::AddWriteBuf(const std::string &data)
if (this->quitting)
return;
- if (this->MyClass && (sendq.length() + data.length() > this->MyClass->GetSendqMax()))
+ if (this->MyClass && !this->HasPrivPermission("users/flood/increased-buffers") && sendq.length() + data.length() > this->MyClass->GetSendqMax())
{
/*
* Fix by brain - Set the error text BEFORE calling, because