The actual bug is a race condition. A votekick is a kick (a forced
disconnect, basically, by player ID), and a ban (prevents joining, by
SteamID).

If a player should disconnect while a vote is in progress, the kick won't
go through (their player ID will change as they reconnect), but the ban
will (since their SteamID never changes.) However, bans are checked early
in the connection process. So, if the player reconnects before the vote
passes, the ban won't prevent them from joining (because it's not applied
yet when they join!), and they bypassed the kick because their player ID is
different.

The solution to this is to check all connected players' SteamIDs when a ban
is added, and kick matching players. Probably not overly difficult to do
with SM. There are also loads of third-party votekick and ban management
systems, that aren't vulnerable to this.

One trick: If somebody should bypass a votekick, when they come back,
they're sort of in a state of limbo. If they should be kicked or
disconnect, they can't rejoin (because the ban is now in effect); thus,
kicking them a second time will get them off for good.

- Nate

On Sun, Sep 20, 2015 at 8:40 AM, Miika <miikalaak...@hotmail.com> wrote:

> We recently started using Valve’s own votekick feature on few of our TF2
> servers. It seems you can prevent yourself from getting votekick banned by
> disconnecting just before the vote goes through. Seen a lot of players do
> this recently and it’s really an annoying problem.
>
> Is there any way to prevent this or is there a SourceMod alternative that
> prevents this?
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlds
>
>
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlds

Reply via email to