summaryrefslogtreecommitdiff
path: root/modules/chanserv
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2024-03-12 16:50:30 +0000
committerSadie Powell <sadie@witchery.services>2024-03-12 16:50:30 +0000
commitb8cd00b4122b7a243a2071268f2d395808782472 (patch)
tree4b821af9a8a9969a97f4ded5b995228937ac851d /modules/chanserv
parentb52e1b2b02c73195740ca836e21faeff281a36c2 (diff)
parentf4bd43e898e6ca415e22546f554e67139e62059e (diff)
Merge branch '2.0' into 2.1.
Diffstat (limited to 'modules/chanserv')
-rw-r--r--modules/chanserv/cs_suspend.cpp28
1 files changed, 20 insertions, 8 deletions
diff --git a/modules/chanserv/cs_suspend.cpp b/modules/chanserv/cs_suspend.cpp
index a30227d6a..ba63e3f44 100644
--- a/modules/chanserv/cs_suspend.cpp
+++ b/modules/chanserv/cs_suspend.cpp
@@ -214,6 +214,13 @@ class CSSuspend final
}
};
+ void Expire(ChannelInfo *ci)
+ {
+ suspend.Unset(ci);
+ Log(this) << "Expiring suspend for " << ci->name;
+ }
+
+
bool Show(CommandSource &source, const Anope::string &what) const
{
return source.IsOper() || std::find(show.begin(), show.end(), what) != show.end();
@@ -259,23 +266,28 @@ public:
expire = false;
- if (!si->expires)
- return;
-
- if (si->expires < Anope::CurTime)
+ if (!Anope::NoExpire && si->expires && si->expires < Anope::CurTime)
{
ci->last_used = Anope::CurTime;
- suspend.Unset(ci);
-
- Log(this) << "Expiring suspend for " << ci->name;
+ Expire(ci);
}
}
EventReturn OnCheckKick(User *u, Channel *c, Anope::string &mask, Anope::string &reason) override
{
- if (u->HasMode("OPER") || !c->ci || !suspend.HasExt(c->ci))
+ if (u->HasMode("OPER") || !c->ci)
return EVENT_CONTINUE;
+ CSSuspendInfo *si = suspend.Get(c->ci);
+ if (!si)
+ return EVENT_CONTINUE;
+
+ if (!Anope::NoExpire && si->expires && si->expires < Anope::CurTime)
+ {
+ Expire(c->ci);
+ return EVENT_CONTINUE;
+ }
+
reason = Language::Translate(u, _("This channel may not be used."));
return EVENT_STOP;
}