summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgenius3000 <genius3000@g3k.solutions>2018-03-26 05:57:22 -0600
committerPeter Powell <petpow@saberuk.com>2018-04-06 22:29:42 +0100
commit3203d698ae8b2e69043ad3940e739b6bd1eb80e8 (patch)
treefa7450c929bdf21387a7623a465c926973ad5d91
parent1cc4cf341c6c8c1288fb25678bd36678d6a205a5 (diff)
Fix ELine::Matches returning false on existing match
When checking for an E-Line match, we want to actually check for a current match even if we previously matched and are set exempt. This fixes situations where you have an E-Lined CGI:IRC address, a G-Lined IP range for some area/host/etc and a smaller E-Lined IP range for known good clients. Currently when CGI:IRC changes the IP, E-Lines are rechecked but because the user is already exempt (from the CGI:IRC E-Line), they are set no longer exempt and match a G-Line, when they should match an E-Line. This exact change has been done before in commit 'c8b344e' and shortly reverted in 'c490a90' to fix issue #989 (CGI:IRC users remaining exempt when the CGI:IRC address is E-Lined but they are not). The actual cause to this issue was likely that the user's hostname was not changed from the CGI:IRC hostname/IP prior to rechecking E-Lines. This is being fixed in a separate commit.
-rw-r--r--src/xline.cpp3
1 files changed, 0 insertions, 3 deletions
diff --git a/src/xline.cpp b/src/xline.cpp
index 0506005ad..586c7342a 100644
--- a/src/xline.cpp
+++ b/src/xline.cpp
@@ -593,9 +593,6 @@ void GLine::Apply(User* u)
bool ELine::Matches(User *u)
{
- if (u->exempt)
- return false;
-
if (InspIRCd::Match(u->ident, this->identmask, ascii_case_insensitive_map))
{
if (InspIRCd::MatchCIDR(u->host, this->hostmask, ascii_case_insensitive_map) ||