summaryrefslogtreecommitdiff
path: root/src/operserv.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2010-11-20 21:45:30 -0500
committerAdam <Adam@anope.org>2010-12-12 19:35:27 -0500
commit246f44b9888161aecefc81f0ff17ddd893287e3c (patch)
treeb89607a9ad9c91914f292fc54cc32213a8d9f5c4 /src/operserv.cpp
parenta85112172d842aa74aa5531788d383328d153e74 (diff)
Added cs_mode, rewrote the old list mode code, and added CIDR support
Diffstat (limited to 'src/operserv.cpp')
-rw-r--r--src/operserv.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/operserv.cpp b/src/operserv.cpp
index 5f6f8c2be..727432585 100644
--- a/src/operserv.cpp
+++ b/src/operserv.cpp
@@ -428,7 +428,18 @@ XLine *XLineManager::Check(User *u)
if (!x->GetUser().empty() && !Anope::Match(u->GetIdent(), x->GetUser()))
continue;
- if (x->GetHost().empty() || (u->ip() && Anope::Match(u->ip.addr(), x->GetHost())) || Anope::Match(u->host, x->GetHost()) || (!u->chost.empty() && Anope::Match(u->chost, x->GetHost())) || (!u->vhost.empty() && Anope::Match(u->vhost, x->GetHost())))
+ if (u->ip() && !x->GetHost().empty())
+ {
+ try
+ {
+ cidr cidr_ip(x->GetHost());
+ if (cidr_ip.match(u->ip))
+ return x;
+ }
+ catch (const SocketException &) { }
+ }
+
+ if (x->GetHost().empty() || (Anope::Match(u->host, x->GetHost()) || (!u->chost.empty() && Anope::Match(u->chost, x->GetHost())) || (!u->vhost.empty() && Anope::Match(u->vhost, x->GetHost()))))
{
OnMatch(u, x);
return x;