[iortcw] 116/497: All: Fix download loop when loading 'media-only' mods from pure servers

Simon McVittie smcv at debian.org
Fri Sep 8 10:36:35 UTC 2017


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to annotated tag 1.42d
in repository iortcw.

commit 6a72eeab191138954ca7409df654fcb1ef6f13c7
Author: M4N4T4RMS at gmail.com <M4N4T4RMS at gmail.com@e65d2741-a53d-b2dc-ae96-bb75fa5e4c4a>
Date:   Sun May 18 14:17:35 2014 +0000

    All: Fix download loop when loading 'media-only' mods from pure servers
---
 MP/code/server/sv_init.c | 37 ++++++++++++++++++++-----------------
 SP/code/server/sv_init.c | 20 ++++++++++----------
 2 files changed, 30 insertions(+), 27 deletions(-)

diff --git a/MP/code/server/sv_init.c b/MP/code/server/sv_init.c
index bd9f0c2..b224151 100644
--- a/MP/code/server/sv_init.c
+++ b/MP/code/server/sv_init.c
@@ -512,7 +512,7 @@ void SV_SpawnServer( char *server, qboolean killBots ) {
 	int i;
 	int checksum;
 	qboolean isBot;
-	char systemInfo[MAX_INFO_STRING];
+	char systemInfo[16384];
 	const char  *p;
 
 	// shut down the existing game if it is running
@@ -534,18 +534,6 @@ void SV_SpawnServer( char *server, qboolean killBots ) {
 	// clear collision map data		// (SA) NOTE: TODO: used in missionpack
 	CM_ClearMap();
 
-	// wipe the entire per-level structure
-	SV_ClearServer();
-
-	// MrE: main zone should be pretty much emtpy at this point
-	// except for file system data and cached renderer data
-	Z_LogHeap();
-
-	// allocate empty config strings
-	for ( i = 0 ; i < MAX_CONFIGSTRINGS ; i++ ) {
-		sv.configstrings[i] = CopyString( "" );
-	}
-
 	// init client structures and svs.numSnapshotEntities
 	if ( !Cvar_VariableValue( "sv_running" ) ) {
 		SV_Startup();
@@ -579,6 +567,18 @@ void SV_SpawnServer( char *server, qboolean killBots ) {
 		}
 	}
 
+	// wipe the entire per-level structure
+	SV_ClearServer();
+
+	// MrE: main zone should be pretty much emtpy at this point
+	// except for file system data and cached renderer data
+	Z_LogHeap();
+
+	// allocate empty config strings
+	for ( i = 0 ; i < MAX_CONFIGSTRINGS ; i++ ) {
+		sv.configstrings[i] = CopyString( "" );
+	}
+
 	// Ridah
 	// DHM - Nerve :: We want to use the completion bar in multiplayer as well
 	if ( sv_gametype->integer == GT_SINGLE_PLAYER || sv_gametype->integer >= GT_WOLF ) {
@@ -712,6 +712,13 @@ void SV_SpawnServer( char *server, qboolean killBots ) {
 		}
 		p = FS_LoadedPakNames();
 		Cvar_Set( "sv_pakNames", p );
+
+		// we want the server to reference the mp_bin pk3 that the client is expected to load from
+		// if a dedicated pure server we need to touch the cgame because it could be in a
+		// seperate pk3 file and the client will need to load the latest cgame
+		if ( com_dedicated->integer ) {
+			SV_TouchCGameDLL();
+		}
 	} else {
 		Cvar_Set( "sv_paks", "" );
 		Cvar_Set( "sv_pakNames", "" );
@@ -719,10 +726,6 @@ void SV_SpawnServer( char *server, qboolean killBots ) {
 	// the server sends these to the clients so they can figure
 	// out which pk3s should be auto-downloaded
 	// NOTE: we consider the referencedPaks as 'required for operation'
-
-	// we want the server to reference the mp_bin pk3 that the client is expected to load from
-	SV_TouchCGameDLL();
-
 	p = FS_ReferencedPakChecksums();
 	Cvar_Set( "sv_referencedPaks", p );
 	p = FS_ReferencedPakNames();
diff --git a/SP/code/server/sv_init.c b/SP/code/server/sv_init.c
index 59ecfd3..4d7ddf9 100644
--- a/SP/code/server/sv_init.c
+++ b/SP/code/server/sv_init.c
@@ -691,7 +691,7 @@ void SV_SpawnServer( char *server, qboolean killBots ) {
 	int i;
 	int checksum;
 	qboolean isBot;
-	char systemInfo[MAX_INFO_STRING];
+	char systemInfo[16384];
 	const char  *p;
 
 	// Ridah, enforce maxclients in single player, so there is enough room for AI characters
@@ -746,14 +746,6 @@ void SV_SpawnServer( char *server, qboolean killBots ) {
 //	// clear collision map data		// (SA) NOTE: TODO: used in missionpack
 //	CM_ClearMap();
 
-	// wipe the entire per-level structure
-	SV_ClearServer();
-
-	// allocate empty config strings
-	for ( i = 0 ; i < MAX_CONFIGSTRINGS ; i++ ) {
-		sv.configstrings[i] = CopyString( "" );
-	}
-
 	// init client structures and svs.numSnapshotEntities
 	if ( !Cvar_VariableValue( "sv_running" ) ) {
 		SV_Startup();
@@ -787,6 +779,14 @@ void SV_SpawnServer( char *server, qboolean killBots ) {
 		}
 	}
 
+	// wipe the entire per-level structure
+	SV_ClearServer();
+
+	// allocate empty config strings
+	for ( i = 0 ; i < MAX_CONFIGSTRINGS ; i++ ) {
+		sv.configstrings[i] = CopyString( "" );
+	}
+
 	// Ridah
 	if ( sv_gametype->integer == GT_SINGLE_PLAYER ) {
 		SV_SetExpectedHunkUsage( va( "maps/%s.bsp", server ) );
@@ -799,7 +799,7 @@ void SV_SpawnServer( char *server, qboolean killBots ) {
 	Cvar_Set( "cl_paused", "0" );
 
 	// get a new checksum feed and restart the file system
-	sv.checksumFeed = ( ( (int) rand() << 16 ) ^ rand() ) ^ Sys_Milliseconds();
+	sv.checksumFeed = ( ( (int) rand() << 16 ) ^ rand() ) ^ Com_Milliseconds();
 	FS_Restart( sv.checksumFeed );
 
 	CM_LoadMap( va( "maps/%s.bsp", server ), qfalse, &checksum );

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/iortcw.git



More information about the Pkg-games-commits mailing list