+ ServerInstance->Logs->Log("CONNECTCLASS", DEBUG, "ALLOW %s %d %s", c->host.c_str(), c->GetPort(), c->GetName().c_str());
+ }
+ else
+ {
+ ServerInstance->Logs->Log("CONNECTCLASS", DEBUG, "DENY %s %d %s", c->GetHost().c_str(), c->GetPort(), c->GetName().c_str());
+ }
+
+ /* check if host matches.. */
+ if (c->GetHost().length() && !InspIRCd::MatchCIDR(this->GetIPString(), c->GetHost(), NULL) &&
+ !InspIRCd::MatchCIDR(this->host, c->GetHost(), NULL))
+ {
+ ServerInstance->Logs->Log("CONNECTCLASS", DEBUG, "No host match (for %s)", c->GetHost().c_str());
+ continue;
+ }
+
+ /*
+ * deny change if change will take class over the limit check it HERE, not after we found a matching class,
+ * because we should attempt to find another class if this one doesn't match us. -- w00t
+ */
+ if (c->limit && (c->RefCount >= c->limit))
+ {
+ ServerInstance->Logs->Log("CONNECTCLASS", DEBUG, "OOPS: Connect class limit (%lu) hit, denying", c->limit);
+ continue;
+ }
+
+ /* if it requires a port ... */
+ if (c->GetPort())
+ {
+ ServerInstance->Logs->Log("CONNECTCLASS", DEBUG, "Requires port (%d)", c->GetPort());
+
+ /* and our port doesn't match, fail. */
+ if (this->GetServerPort() != c->GetPort())