diff options
author | icculus <icculus@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2009-09-15 01:11:09 +0000 |
---|---|---|
committer | icculus <icculus@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2009-09-15 01:11:09 +0000 |
commit | 2d7e1ad4c8e03c50021b9b7d1511e1240f9c7e2a (patch) | |
tree | beec9580c98294432c170b77e409f2b2278ecae8 | |
parent | fdc9cb96d517332168beaefd5731c5b150b56afb (diff) | |
download | ioquake3-aero-2d7e1ad4c8e03c50021b9b7d1511e1240f9c7e2a.tar.gz ioquake3-aero-2d7e1ad4c8e03c50021b9b7d1511e1240f9c7e2a.zip |
When dropping bots, don't move to CS_ZOMBIE. Go straight to CS_FREE.
They aren't a real network connection, so you don't want to waste time before
opening the slot for humans.
Fixes Bugzilla #4243.
git-svn-id: svn://svn.icculus.org/quake3/trunk@1605 edf5b092-35ff-0310-97b2-ce42778d08ea
-rw-r--r-- | code/server/sv_client.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/code/server/sv_client.c b/code/server/sv_client.c index 16a67ab..08d02d4 100644 --- a/code/server/sv_client.c +++ b/code/server/sv_client.c @@ -531,12 +531,13 @@ or crashing -- SV_FinalMessage() will handle that void SV_DropClient( client_t *drop, const char *reason ) { int i; challenge_t *challenge; + const qboolean isBot = drop->netchan.remoteAddress.type == NA_BOT; if ( drop->state == CS_ZOMBIE ) { return; // already dropped } - if (drop->netchan.remoteAddress.type != NA_BOT) { + if ( !isBot ) { // see if we already have a challenge for this ip challenge = &svs.challenges[0]; @@ -556,7 +557,6 @@ void SV_DropClient( client_t *drop, const char *reason ) { // tell everyone why they got dropped SV_SendServerCommand( NULL, "print \"%s" S_COLOR_WHITE " %s\n\"", drop->name, reason ); - if (drop->download) { FS_FCloseFile( drop->download ); drop->download = 0; @@ -569,15 +569,20 @@ void SV_DropClient( client_t *drop, const char *reason ) { // add the disconnect command SV_SendServerCommand( drop, "disconnect \"%s\"", reason); - if ( drop->netchan.remoteAddress.type == NA_BOT ) { + if ( isBot ) { SV_BotFreeClient( drop - svs.clients ); } // nuke user info SV_SetUserinfo( drop - svs.clients, "" ); - Com_DPrintf( "Going to CS_ZOMBIE for %s\n", drop->name ); - drop->state = CS_ZOMBIE; // become free in a few seconds + if ( isBot ) { + // bots shouldn't go zombie, as there's no real net connection. + drop->state = CS_FREE; + } else { + Com_DPrintf( "Going to CS_ZOMBIE for %s\n", drop->name ); + drop->state = CS_ZOMBIE; // become free in a few seconds + } // if this was the last client on the server, send a heartbeat // to the master so it is known the server is empty |