+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)
+ {
+ if (host_client->begun)
+ SV_BroadcastPrintf("Client \"%s\" connection timed out\n", host_client->name);
+ else
+ Con_Printf("Client \"%s\" connection timed out\n", host_client->name);
+
+ SV_DropClient(false);
+ }
+ }
+}
+
+/*
+==================
+SV_TimeReport
+
+Returns a time report string, for example for
+==================
+*/
+const char *SV_TimingReport(char *buf, size_t buflen)
+{
+ return va(buf, buflen, "%.1f%% CPU, %.2f%% lost, offset avg %.1fms, max %.1fms, sdev %.1fms", svs.perf_cpuload * 100, svs.perf_lost * 100, svs.perf_offset_avg * 1000, svs.perf_offset_max * 1000, svs.perf_offset_sdev * 1000);
+}
+