[BUG] Kicking too much clients at once floods clients

dyn dynborg at vogonhq.com
Sat Nov 17 17:13:46 EST 2007


Kicking too much clients at once floods client, usually when you issue
'kick allbots' command but it may happen when kicking regular players
too. Problem is when you kick more than 30 clients other clients
disconnect with "CL_GetServerCommand: a reliable command was cycled
out". Server still runs so clients can reconnect.

Workaround is to limit all all-kicks to 24 clients at once. It is safe
up to 30 clients, but flood may occur now and then, so 24-28 may be
better. Client rate and maxpackets are irrelevant.

--- sv_ccmds.c  2007-11-17 16:05:22.533248070 -0600
+++ sv_ccmds.c-1209     2007-11-07 06:45:00.000000000 -0600
@@ -362,7 +362,6 @@

        cl = SV_GetPlayerByHandle();
        if ( !cl ) {
-               int j = 0;
                if ( !Q_stricmp(Cmd_Argv(1), "all") ) {
                        for ( i=0, cl=svs.clients ; i <
sv_maxclients->integer ; i++,cl++ ) {
                                if ( !cl->state ) {
@@ -372,8 +371,6 @@
                                        continue;
                                }
                                SV_DropClient( cl, "was kicked" );
-                if (++j == 24)
-                    break;
                                cl->lastPacketTime = svs.time;  // in
case there is a funny zombie
                        }
                }
@@ -386,8 +383,6 @@
                                        continue;
                                }
                                SV_DropClient( cl, "was kicked" );
-                if (++j == 24)
-                    break;
                                cl->lastPacketTime = svs.time;  // in
case there is a funny zombie
                        }
                }


Credit goes to: DD
-- 
dyn
http://vogonhq.com/



More information about the quake3 mailing list