for (i = 0;i < sv_numsockets;i++)
while (sv_sockets[i] && (length = NetConn_Read(sv_sockets[i], readbuffer, sizeof(readbuffer), &peeraddress)) > 0)
NetConn_ServerParsePacket(sv_sockets[i], readbuffer, length, &peeraddress);
- for (i = 0, host_client = svs.clients;i < svs.maxclients;i++, host_client++)
- {
- // never timeout loopback connections
- if (host_client->netconnection && host.realtime > host_client->netconnection->timeout && LHNETADDRESS_GetAddressType(&host_client->netconnection->peeraddress) != LHNETADDRESSTYPE_LOOP)
- {
- Con_Printf("Client \"%s\" connection timed out\n", host_client->name);
- SV_DropClient(false);
- }
- }
}
void NetConn_SleepMicroseconds(int microseconds)
SV_Prepare_CSQC();
}
+static void SV_CheckTimeouts(void)
+{
+ int i;
+
+ // never timeout loopback connections
+ for (i = (host_isclient.integer ? 1 : 0), host_client = &svs.clients[i]; i < svs.maxclients; i++, host_client++)
+ {
+ if (host_client->netconnection && host.realtime > host_client->netconnection->timeout)
+ {
+ Con_Printf("Client \"%s\" connection timed out\n", host_client->name);
+ SV_DropClient(false);
+ }
+ }
+}
+
extern cvar_t host_maxwait;
extern cvar_t host_framerate;
extern cvar_t cl_maxphysicsframesperserverframe;
* be undersleeping due to select() detecting a new packet
*/
if (sv.active)
+ {
NetConn_ServerFrame();
+ SV_CheckTimeouts();
+ }
}
/*
// get new packets
if (sv.active)
+ {
NetConn_ServerFrame();
+ SV_CheckTimeouts();
+ }
// if the accumulators haven't become positive yet, wait a while
wait = sv_timer * -1000000.0;