diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/command_parse.cpp | 2 | ||||
-rw-r--r-- | src/modules/m_operflood.cpp | 41 | ||||
-rw-r--r-- | src/userprocess.cpp | 2 | ||||
-rw-r--r-- | src/users.cpp | 6 |
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 |