1
0
mirror of https://github.com/anope/anope.git synced 2026-06-25 04:56:39 +02:00

Fix module event prioritization which was broken with the newer

auto-attach event stuff.

Also remove logically dead code from os_defcon, and make os_defcon akill
similar masks to os_session when enforcing session akills.

Fixes #1618 which relies on os_session to be prioritized before
os_defcon.
This commit is contained in:
Adam
2014-10-14 18:58:55 -04:00
parent e46bcff324
commit 0cd3bfa24f
7 changed files with 19 additions and 7 deletions
+2
View File
@@ -285,6 +285,8 @@ class CoreExport Module : public Extensible
*/
ModuleVersion GetVersion() const;
virtual void Prioritize();
/* Everything below here are events. Modules must ModuleManager::Attach to these events
* before they will be called.
*/
+2 -7
View File
@@ -496,11 +496,6 @@ class OSDefcon : public Module
XLine x("*@" + u->host, OperServ ? OperServ->nick : "defcon", Anope::CurTime + DConfig.akillexpire, DConfig.akillreason, XLineManager::GenerateUID());
akills->Send(NULL, &x);
}
if (DConfig.Check(DEFCON_NO_NEW_CLIENTS) || DConfig.Check(DEFCON_AKILL_NEW_CLIENTS))
{
u->Kill(OperServ ? OperServ->nick : "", DConfig.akillreason);
return;
}
if (DConfig.Check(DEFCON_NO_NEW_CLIENTS) || DConfig.Check(DEFCON_AKILL_NEW_CLIENTS))
{
@@ -529,9 +524,9 @@ class OSDefcon : public Module
++session->hits;
if (akills && DConfig.max_session_kill && session->hits >= DConfig.max_session_kill)
{
XLine x("*@" + u->host, OperServ ? OperServ->nick : "", Anope::CurTime + DConfig.session_autokill_expiry, "Defcon session limit exceeded", XLineManager::GenerateUID());
XLine x("*@" + session->addr.mask(), OperServ ? OperServ->nick : "", Anope::CurTime + DConfig.session_autokill_expiry, "Defcon session limit exceeded", XLineManager::GenerateUID());
akills->Send(NULL, &x);
Log(OperServ, "akill/defcon") << "[DEFCON] Added a temporary AKILL for \002*@" << u->host << "\002 due to excessive connections";
Log(OperServ, "akill/defcon") << "[DEFCON] Added a temporary AKILL for \002*@" << session->addr.mask() << "\002 due to excessive connections";
}
else
{
+3
View File
@@ -639,7 +639,10 @@ class OSSession : public Module
exception_type("Exception", Exception::Unserialize), ss(this), commandossession(this), commandosexception(this), akills("XLineManager", "xlinemanager/sgline")
{
this->SetPermanent(true);
}
void Prioritize() anope_override
{
ModuleManager::SetPriority(this, PRIORITY_FIRST);
}
+3
View File
@@ -220,7 +220,10 @@ class NSIdentifyLDAP : public Module
{
me = this;
}
void Prioritize() anope_override
{
ModuleManager::SetPriority(this, PRIORITY_FIRST);
}
+3
View File
@@ -1258,7 +1258,10 @@ class ProtoUnreal : public Module
{
this->AddModes();
}
void Prioritize() anope_override
{
ModuleManager::SetPriority(this, PRIORITY_FIRST);
}
+4
View File
@@ -101,6 +101,10 @@ void Module::SetAuthor(const Anope::string &nauthor)
this->author = nauthor;
}
void Module::Prioritize()
{
}
ModuleVersion::ModuleVersion(int maj, int min, int pa) : version_major(maj), version_minor(min), version_patch(pa)
{
}
+2
View File
@@ -265,6 +265,8 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u)
for (unsigned i = 0; i < I_SIZE; ++i)
EventHandlers[i].push_back(m);
m->Prioritize();
FOREACH_MOD(OnModuleLoad, (u, m));
return MOD_ERR_OK;