Take a look for yourself:
b.address is of type ENetAddress, and if you look here, you'll see that host is a uint32 into which a 32-bit IPv4 address just fits. It does not check the port and only the public IP address!
[SELECT ALL] Code:
bool isbanned(int cn)
{
if(!valid_client(cn)) return false; // tempest: this _might_ be the cause (highly speculative!)
client &c = *clients[cn];
if(c.type==ST_LOCAL) return false;
loopv(bans)
{
ban &b = bans[i];
if(b.millis < servmillis) { bans.remove(i--); }
if(b.address.host == c.peer->address.host) { return true; } // tempest: this is where the check happens (normally :S)
}
return checkgban(c.peer->address.host) || ipblacklist.check(c.peer->address.host);
}
b.address is of type ENetAddress, and if you look here, you'll see that host is a uint32 into which a 32-bit IPv4 address just fits. It does not check the port and only the public IP address!