diff options
author | Adam <Adam@anope.org> | 2011-11-05 15:05:15 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-11-05 15:05:15 -0400 |
commit | 97b9055f92f21cd91af44a3d5dacce0024536cff (patch) | |
tree | 617a18ffcd1be8e3be5bf25d42fc407454f66505 | |
parent | 5f0b9338dc58923bbbba8293bf9021e87ceb1976 (diff) |
Remove xlines from the IRCd aswell as from our list when the clear command is used, and fixed adding timed Zlines to inspircd
-rw-r--r-- | include/oper.h | 1 | ||||
-rw-r--r-- | modules/commands/os_akill.cpp | 8 | ||||
-rw-r--r-- | modules/commands/os_sxline.cpp | 8 | ||||
-rw-r--r-- | modules/protocol/inspircd-ts6.h | 2 |
4 files changed, 16 insertions, 3 deletions
diff --git a/include/oper.h b/include/oper.h index 1d4092b4a..1537681a1 100644 --- a/include/oper.h +++ b/include/oper.h @@ -112,6 +112,7 @@ class CoreExport XLineManager : public Service<XLineManager> XLine *GetEntry(unsigned index); /** Clear the XLine vector + * Note: This does not remove the XLines from the IRCd */ void Clear(); diff --git a/modules/commands/os_akill.cpp b/modules/commands/os_akill.cpp index 3b82fb5fb..ea8b2e40c 100644 --- a/modules/commands/os_akill.cpp +++ b/modules/commands/os_akill.cpp @@ -379,7 +379,13 @@ class CommandOSAKill : public Command { User *u = source.u; FOREACH_MOD(I_OnDelXLine, OnDelXLine(u, NULL, akills)); - akills->Clear(); + + for (unsigned i = akills->GetCount(); i > 0; --i) + { + XLine *x = akills->GetEntry(i - 1); + akills->DelXLine(x); + } + source.Reply(_("The AKILL list has been cleared.")); return; diff --git a/modules/commands/os_sxline.cpp b/modules/commands/os_sxline.cpp index 56444383d..fb5b7f244 100644 --- a/modules/commands/os_sxline.cpp +++ b/modules/commands/os_sxline.cpp @@ -272,7 +272,13 @@ class CommandOSSXLineBase : public Command { User *u = source.u; FOREACH_MOD(I_OnDelXLine, OnDelXLine(u, NULL, this->xlm())); - this->xlm()->Clear(); + + for (unsigned i = this->xlm()->GetCount(); i > 0; --i) + { + XLine *x = this->xlm()->GetEntry(i - 1); + this->xlm()->DelXLine(x); + } + source.Reply(_("The %s list has been cleared."), this->name.c_str()); return; diff --git a/modules/protocol/inspircd-ts6.h b/modules/protocol/inspircd-ts6.h index 4ad003ad5..a540f30b3 100644 --- a/modules/protocol/inspircd-ts6.h +++ b/modules/protocol/inspircd-ts6.h @@ -218,7 +218,7 @@ class InspIRCdTS6Proto : public IRCDProto time_t timeleft = x->Expires - Anope::CurTime; if (timeleft > 172800 || !x->Expires) timeleft = 172800; - send_cmd(Config->Numeric, "ADDLINE Z %s %s %ld %ld :%s", x->GetHost().c_str(), x->By.c_str(), static_cast<long>(Anope::CurTime), static_cast<long>(Anope::CurTime), x->Reason.c_str()); + send_cmd(Config->Numeric, "ADDLINE Z %s %s %ld %ld :%s", x->GetHost().c_str(), x->By.c_str(), static_cast<long>(Anope::CurTime), static_cast<long>(timeleft), x->Reason.c_str()); } void SendSVSJoin(const Anope::string &source, const Anope::string &nick, const Anope::string &chan, const Anope::string &) |