From 97b9055f92f21cd91af44a3d5dacce0024536cff Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 5 Nov 2011 15:05:15 -0400 Subject: [PATCH] Remove xlines from the IRCd aswell as from our list when the clear command is used, and fixed adding timed Zlines to inspircd --- include/oper.h | 1 + modules/commands/os_akill.cpp | 8 +++++++- modules/commands/os_sxline.cpp | 8 +++++++- 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 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(Anope::CurTime), static_cast(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(Anope::CurTime), static_cast(timeleft), x->Reason.c_str()); } void SendSVSJoin(const Anope::string &source, const Anope::string &nick, const Anope::string &chan, const Anope::string &)