summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-11-05 15:05:15 -0400
committerAdam <Adam@anope.org>2011-11-05 15:05:15 -0400
commit97b9055f92f21cd91af44a3d5dacce0024536cff (patch)
tree617a18ffcd1be8e3be5bf25d42fc407454f66505
parent5f0b9338dc58923bbbba8293bf9021e87ceb1976 (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.h1
-rw-r--r--modules/commands/os_akill.cpp8
-rw-r--r--modules/commands/os_sxline.cpp8
-rw-r--r--modules/protocol/inspircd-ts6.h2
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 &)