Source/ThunderBeast/QuakeToon/server/sv_main.c
void SV_CheckTimeouts (void)
{
	int		i;
	client_t	*cl;
	int			droppoint;
	int			zombiepoint;

	droppoint = svs.realtime - 1000*timeout->value;
	zombiepoint = svs.realtime - 1000*zombietime->value;

	for (i=0,cl=svs.clients ; i<maxclients->value ; i++,cl++)
	{
		// message times may be wrong across a changelevel
		if (cl->lastmessage > svs.realtime)
			cl->lastmessage = svs.realtime;

		if (cl->state == cs_zombie
		&& cl->lastmessage < zombiepoint)
		{
			cl->state = cs_free;	// can now be reused
			continue;
		}
		if ( (cl->state == cs_connected || cl->state == cs_spawned) 
			&& cl->lastmessage < droppoint)
		{
			SV_BroadcastPrintf (PRINT_HIGH, "%s timed out\n", cl->name);
			SV_DropClient (cl); 
			cl->state = cs_free;	// don't bother with zombie state
		}
	}
}
/*
==================
SV_CheckTimeouts

If a packet has not been received from a client for timeout->value
seconds, drop the conneciton.  Server frames are used instead of
realtime to avoid dropping the local client while debugging.

When a client is normally dropped, the client_t goes into a zombie state
for a few seconds to make sure any final reliable message gets resent
if necessary
==================
*/
SV_CheckTimeouts
If a packet has not been received from a client for timeout->value
seconds, drop the conneciton.  Server frames are used instead of
realtime to avoid dropping the local client while debugging.

When a client is normally dropped, the client_t goes into a zombie state
for a few seconds to make sure any final reliable message gets resent
if necessary
SV_CheckTimeouts If a packet has not been received from a client for timeout - > value seconds drop the conneciton . Server frames are used instead of realtime to avoid dropping the local client while debugging . When a client is normally dropped the client_t goes into a zombie state for a few seconds to make sure any final reliable message gets resent if necessary
void SV_CheckTimeouts (void)
{
	int		i;
	client_t	*cl;
	int			droppoint;
	int			zombiepoint;
	droppoint = svs.realtime - 1000*timeout->value;
	zombiepoint = svs.realtime - 1000*zombietime->value;
	for (i=0,cl=svs.clients ; i<maxclients->value ; i++,cl++)
	{
		if (cl->lastmessage > svs.realtime)
			cl->lastmessage = svs.realtime;
		if (cl->state == cs_zombie
		&& cl->lastmessage < zombiepoint)
		{
			cl->state = cs_free;	
			continue;
		}
		if ( (cl->state == cs_connected || cl->state == cs_spawned) 
			&& cl->lastmessage < droppoint)
		{
			SV_BroadcastPrintf (PRINT_HIGH, "%s timed out\n", cl->name);
			SV_DropClient (cl); 
			cl->state = cs_free;	
		}
	}
}
void SV_CheckTimeouts ( void ) { int i ; client_t * cl ; int droppoint ; int zombiepoint ; droppoint = svs . realtime - 1000 * timeout -> value ; zombiepoint = svs . realtime - 1000 * zombietime -> value ; for ( i = 0 , cl = svs . clients ; i < maxclients -> value ; i ++ , cl ++ ) { if ( cl -> lastmessage > svs . realtime ) cl -> lastmessage = svs . realtime ; if ( cl -> state == cs_zombie && cl -> lastmessage < zombiepoint ) { cl -> state = cs_free ; continue ; } if ( ( cl -> state == cs_connected || cl -> state == cs_spawned ) && cl -> lastmessage < droppoint ) { SV_BroadcastPrintf ( PRINT_HIGH , " \n " , cl -> name ) ; SV_DropClient ( cl ) ; cl -> state = cs_free ; } } }
SV_CheckTimeouts
If a packet has not been received from a client for timeout->value
seconds, drop the conneciton.
SV_CheckTimeouts If a packet has not been received from a client for timeout - > value seconds drop the conneciton .
// message times may be wrong across a changelevel // can now be reused // don't bother with zombie state