From 71a92bc0e061ee19fe5ed2c240b189dabbafd0d1 Mon Sep 17 00:00:00 2001 From: havoc Date: Mon, 5 Apr 2004 06:49:31 +0000 Subject: [PATCH] inlined Host_EndGame in CL_ParseServerMessage's svc_disconnect case and greatly reduced its code (removing the server shutdown, etc), this fixed an infinite recursion shutdown crash introduced by the Host_ShutdownServer changes git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@4083 d7cf8633-e32d-0410-b094-e92efae38249 --- cl_parse.c | 7 ++++++- host.c | 32 ++------------------------------ quakedef.h | 1 - 3 files changed, 8 insertions(+), 32 deletions(-) diff --git a/cl_parse.c b/cl_parse.c index 1db4e0a6..b050e533 100644 --- a/cl_parse.c +++ b/cl_parse.c @@ -1551,7 +1551,12 @@ void CL_ParseServerMessage(void) break; case svc_disconnect: - Host_EndGame ("Server disconnected\n"); + Con_Printf ("Server disconnected\n"); + if (cls.demonum != -1) + CL_NextDemo (); + else + CL_Disconnect (); + break; case svc_print: Con_Print(MSG_ReadString()); diff --git a/host.c b/host.c index 4aea3260..a432abdb 100644 --- a/host.c +++ b/host.c @@ -96,34 +96,6 @@ cvar_t temp1 = {0, "temp1","0"}; cvar_t timestamps = {CVAR_SAVE, "timestamps", "0"}; cvar_t timeformat = {CVAR_SAVE, "timeformat", "[%b %e %X] "}; -/* -================ -Host_EndGame -================ -*/ -void Host_EndGame (const char *format, ...) -{ - va_list argptr; - char string[1024]; - - va_start (argptr,format); - vsprintf (string,format,argptr); - va_end (argptr); - Con_DPrintf("Host_EndGame: %s\n",string); - - Host_ShutdownServer (false); - - if (cls.state == ca_dedicated) - Sys_Error ("Host_EndGame: %s\n",string); // dedicated servers exit - - if (cls.demonum != -1) - CL_NextDemo (); - else - CL_Disconnect (); - - longjmp (host_abortserver, 1); -} - /* ================ Host_Error @@ -502,11 +474,11 @@ void Host_ShutdownServer(qboolean crash) sizebuf_t buf; char message[4]; + Con_DPrintf("Host_ShutdownServer\n"); + if (!sv.active) return; - Con_DPrintf("Host_ShutdownServer\n"); - // print out where the crash happened, if it was caused by QC PR_Crash(); diff --git a/quakedef.h b/quakedef.h index 107a9917..bb5e7843 100644 --- a/quakedef.h +++ b/quakedef.h @@ -240,7 +240,6 @@ void Host_InitCommands(void); void Host_Init(void); void Host_Shutdown(void); void Host_Error(const char *error, ...); -void Host_EndGame(const char *message, ...); void Host_Frame(float time); void Host_Quit_f(void); void Host_ClientCommands(const char *fmt, ...); -- 2.39.2