diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_connflood.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/modules/m_connflood.cpp b/src/modules/m_connflood.cpp index 809055a5a..fe581e072 100644 --- a/src/modules/m_connflood.cpp +++ b/src/modules/m_connflood.cpp @@ -27,6 +27,7 @@ class ModuleConnFlood : public Module { + private: unsigned int seconds; unsigned int timeout; unsigned int boot_wait; @@ -36,6 +37,16 @@ class ModuleConnFlood : public Module time_t first; std::string quitmsg; + static bool IsExempt(LocalUser* user) + { + // E-lined and already banned users shouldn't be hit. + if (user->exempt || user->quitting) + return true; + + // Users in an exempt class shouldn't be hit. + return user->GetClass() && !user->GetClass()->config->getBool("useconnflood", true); + } + public: ModuleConnFlood() : conns(0), throttled(false) @@ -65,7 +76,7 @@ public: ModResult OnUserRegister(LocalUser* user) CXX11_OVERRIDE { - if (user->exempt) + if (IsExempt(user)) return MOD_RES_PASSTHRU; time_t next = ServerInstance->Time(); |