This fixes an issue where SV_DropClient() would get called twice on the same client if the later gets kicked and has too many reliable commands right while sending a server command in SV_DropClient().
For example when kicking a client, SV_DropClient() gets called and sends server commands (print + disconnect). If the kicked client has too many reliable commands, SV_AddServerCommand() would call SV_DropClient() again on the same client.
This bug can occur as follow:
SV_CheckTimeouts() is called
SV_DropClient() gets called on a client that timed out
SV_SendServerCommand() gets called to print stuff
SV_AddServerCommand() is called on the client being dropped
SV_DropClient() is called because it's exactly the 513th command
Print stuff, call VM stuff, send "disconnect", reset the user info...
Call VM stuff, send "disconnect", reset the user info...
This fixes an issue where SV_DropClient() would get called twice on the same client if the later gets kicked and has too many reliable commands right while sending a server command in SV_DropClient(). For example when kicking a client, SV_DropClient() gets called and sends server commands (print + disconnect). If the kicked client has too many reliable commands, SV_AddServerCommand() would call SV_DropClient() again on the same client.
This bug can occur as follow: