summaryrefslogtreecommitdiff
path: root/src/server/sv_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/sv_main.c')
-rw-r--r--src/server/sv_main.c41
1 files changed, 27 insertions, 14 deletions
diff --git a/src/server/sv_main.c b/src/server/sv_main.c
index 8d75d55f..860a0cdb 100644
--- a/src/server/sv_main.c
+++ b/src/server/sv_main.c
@@ -176,6 +176,9 @@ void QDECL SV_SendServerCommand(client_t *cl, const char *fmt, ...) {
client_t *client;
int j;
+ if (cl && cl->isPlaceholder)
+ return;
+
va_start (argptr,fmt);
Q_vsnprintf ((char *)message, sizeof(message), fmt,argptr);
va_end (argptr);
@@ -200,6 +203,8 @@ void QDECL SV_SendServerCommand(client_t *cl, const char *fmt, ...) {
// send the data to all relevent clients
for (j = 0, client = svs.clients; j < sv_maxclients->integer ; j++, client++) {
+ if (client->isPlaceholder)
+ continue;
SV_AddServerCommand( client, (char *)message );
}
}
@@ -851,6 +856,8 @@ void SV_PacketEvent( netadr_t from, msg_t *msg ) {
if (cl->state == CS_FREE) {
continue;
}
+ if (cl->isPlaceholder)
+ continue;
if ( !NET_CompareBaseAdr( from, cl->netchan.remoteAddress ) ) {
continue;
}
@@ -908,22 +915,25 @@ static void SV_CalcPings( void ) {
continue;
}
- total = 0;
- count = 0;
- for ( j = 0 ; j < PACKET_BACKUP ; j++ ) {
- if ( cl->frames[j].messageAcked <= 0 ) {
- continue;
+ if (!cl->isPlaceholder)
+ {
+ total = 0;
+ count = 0;
+ for ( j = 0 ; j < PACKET_BACKUP ; j++ ) {
+ if ( cl->frames[j].messageAcked <= 0 ) {
+ continue;
+ }
+ delta = cl->frames[j].messageAcked - cl->frames[j].messageSent;
+ count++;
+ total += delta;
}
- delta = cl->frames[j].messageAcked - cl->frames[j].messageSent;
- count++;
- total += delta;
- }
- if (!count) {
- cl->ping = 999;
- } else {
- cl->ping = total/count;
- if ( cl->ping > 999 ) {
+ if (!count) {
cl->ping = 999;
+ } else {
+ cl->ping = total/count;
+ if ( cl->ping > 999 ) {
+ cl->ping = 999;
+ }
}
}
@@ -956,6 +966,9 @@ static void SV_CheckTimeouts( void ) {
zombiepoint = svs.time - 1000 * sv_zombietime->integer;
for (i=0,cl=svs.clients ; i < sv_maxclients->integer ; i++,cl++) {
+ if (cl->isPlaceholder)
+ continue;
+
// message times may be wrong across a changelevel
if (cl->lastPacketTime > svs.time) {
cl->lastPacketTime = svs.time;