if (!match(bp->name, who->name) && !match(bp->user, who->username))
{
+ if (!match(bp->host, who->host) || !match(bp->host, who->realhost))
+ return 1;
+
+ if ((!IsIPSpoof(who) || !ConfigFileEntry.hide_spoof_ips) && !match(bp->host, who->sockhost))
+ return 1;
+
switch (bp->type)
{
case HM_HOST:
- if (!match(bp->host, who->host) || !match(bp->host, who->realhost) || !match(bp->host, who->sockhost))
- return 1;
-
if (!cloak_match(&who->localClient->cloaks, bp->host))
return 1;
break;
case HM_IPV4:
+ if (IsIPSpoof(who) && ConfigFileEntry.hide_spoof_ips)
+ break;
if (who->localClient->aftype == AF_INET)
if (match_ipv4(&who->localClient->ip, &bp->addr, bp->bits))
return 1;
- if (!match(bp->host, who->host) || !match(bp->host, who->realhost) || !match(bp->host, who->sockhost))
- return 1;
break;
#ifdef IPV6
case HM_IPV6:
+ if (IsIPSpoof(who) && ConfigFileEntry.hide_spoof_ips)
+ break;
if (who->localClient->aftype == AF_INET6)
if (match_ipv6(&who->localClient->ip, &bp->addr, bp->bits))
return 1;
- if (!match(bp->host, who->host) || !match(bp->host, who->realhost) || !match(bp->host, who->sockhost))
- return 1;
break;
#endif
default: