diff --git a/src/engine/client/cl_main.cpp b/src/engine/client/cl_main.cpp index 9c04272cb4..6deaf6203a 100644 --- a/src/engine/client/cl_main.cpp +++ b/src/engine/client/cl_main.cpp @@ -564,9 +564,12 @@ class DemoPlayCmd: public Cmd::StaticCmd { return; } - // make sure a local server is killed - Cvar_Set( "sv_killserver", "1" ); - CL_Disconnect( true ); + if (com_sv_running.Get()) { + // Use /disconnect to shut everything down cleanly. + // Maybe we should also do that if there is an online connection or another demo? + Cmd::BufferCommandTextAfter("disconnect; demo_play " + Cmd::Escape(args.Argv(1))); + return; + } // open the demo file const std::string& fileName = args.Argv(1); @@ -1008,16 +1011,12 @@ void CL_Connect_f() // clear any previous "server full" type messages clc.serverMessage[ 0 ] = 0; - if ( com_sv_running.Get() && !strcmp( server, "loopback" ) ) + if ( com_sv_running.Get() ) { // if running a local server, kill it - SV_Shutdown( "Server quit" ); + SV_Shutdown( "Host ended the game" ); } - // make sure a local server is killed - Cvar_Set( "sv_killserver", "1" ); - SV_Frame( 0 ); - try { CL_Disconnect( true ); } catch (Sys::DropErr& err) { diff --git a/src/engine/server/server.h b/src/engine/server/server.h index 514c9f822b..fe45a13396 100644 --- a/src/engine/server/server.h +++ b/src/engine/server/server.h @@ -296,7 +296,6 @@ extern Cvar::Cvar sv_hostname; extern Cvar::Cvar sv_statsURL; extern Cvar::Cvar sv_reconnectlimit; extern Cvar::Cvar sv_padPackets; -extern cvar_t *sv_killserver; extern Cvar::Cvar sv_mapname; extern cvar_t *sv_mapChecksum; extern Cvar::Cvar sv_serverid; diff --git a/src/engine/server/sv_init.cpp b/src/engine/server/sv_init.cpp index 14315f1ad1..f86749d4f2 100644 --- a/src/engine/server/sv_init.cpp +++ b/src/engine/server/sv_init.cpp @@ -611,8 +611,6 @@ void SV_Init() // server vars - sv_killserver = Cvar_Get( "sv_killserver", "0", 0 ); - svs.serverLoad = -1; } diff --git a/src/engine/server/sv_main.cpp b/src/engine/server/sv_main.cpp index 293acb8c8f..4320645910 100644 --- a/src/engine/server/sv_main.cpp +++ b/src/engine/server/sv_main.cpp @@ -71,7 +71,6 @@ Cvar::Cvar sv_hostname("sv_hostname", "server name for server list" Cvar::Cvar sv_statsURL("sv_statsURL", "URL for server's gameplay statistics", Cvar::SERVERINFO, ""); Cvar::Cvar sv_reconnectlimit("sv_reconnectlimit", "minimum time (seconds) before client can reconnect", Cvar::NONE, 3); Cvar::Cvar sv_padPackets("sv_padPackets", "(debugging) add n NOP bytes to each snapshot packet", Cvar::NONE, 0); -cvar_t *sv_killserver; // menu system can set to 1 to shut server down Cvar::Cvar sv_mapname("mapname", "current map on this server", Cvar::SERVERINFO | Cvar::ROM, "nomap"); Cvar::Cvar sv_serverid("sv_serverid", "match ID", Cvar::SYSTEMINFO | Cvar::ROM, 0); Cvar::Cvar sv_maxRate("sv_maxRate", "max bytes/sec to send to a client (0 = unlimited)", Cvar::SERVERINFO, 0); @@ -1317,14 +1316,6 @@ void SV_Frame( int msec ) start = Sys::Milliseconds(); svs.stats.idle += ( double )( start - end ) / 1000; - // the menu kills the server with this cvar - if ( sv_killserver->integer ) - { - SV_Shutdown( "Server was killed." ); - Cvar_Set( "sv_killserver", "0" ); - return; - } - if ( !com_sv_running.Get() ) { return;