aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/modules/m_chanfilter.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/modules/m_chanfilter.cpp b/src/modules/m_chanfilter.cpp
index 14735b13d..a2b643917 100644
--- a/src/modules/m_chanfilter.cpp
+++ b/src/modules/m_chanfilter.cpp
@@ -67,9 +67,14 @@ class ModuleChanFilter : public Module
ChanFilter::ListItem* Match(User* user, Channel* chan, const std::string& text)
{
- ModResult res = CheckExemption::Call(exemptionprov, user, chan, "filter");
- if (!IS_LOCAL(user) || res == MOD_RES_ALLOW)
- return NULL;
+ if (!IS_LOCAL(user))
+ return NULL; // We don't handle remote users.
+
+ if (user->HasPrivPermission("channels/ignore-chanfilter"))
+ return NULL; // The source is an exempt server operator.
+
+ if (CheckExemption::Call(exemptionprov, user, chan, "filter") == MOD_RES_ALLOW)
+ return NULL; // The source matches an exemptchanops entry.
ListModeBase::ModeList* list = cf.GetList(chan);
if (!list)