mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	* Prevent joining a server if you have too many files loaded to add the remainder.
* Made the check in Got_RequestAddfilecmd more comprehensive, since I might as well. Just something to tweak a little later in internal.
This commit is contained in:
		
							parent
							
								
									5c302d7ffc
								
							
						
					
					
						commit
						47e171250f
					
				
					 3 changed files with 42 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -1733,9 +1733,7 @@ static boolean CL_ServerConnectionSearchTicker(boolean viams, tic_t *asksent)
 | 
			
		|||
{
 | 
			
		||||
#ifndef NONET
 | 
			
		||||
	INT32 i;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef NONET
 | 
			
		||||
	// serverlist is updated by GetPacket function
 | 
			
		||||
	if (serverlistcount > 0)
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -1769,7 +1767,20 @@ static boolean CL_ServerConnectionSearchTicker(boolean viams, tic_t *asksent)
 | 
			
		|||
				serverlist[i].info.fileneeded);
 | 
			
		||||
			CONS_Printf(M_GetText("Checking files...\n"));
 | 
			
		||||
			i = CL_CheckFiles();
 | 
			
		||||
			if (i == 2) // cannot join for some reason
 | 
			
		||||
			if (i == 3) // too many files
 | 
			
		||||
			{
 | 
			
		||||
				D_QuitNetGame();
 | 
			
		||||
				CL_Reset();
 | 
			
		||||
				D_StartTitle();
 | 
			
		||||
				M_StartMessage(M_GetText(
 | 
			
		||||
					"You have too many WAD files loaded\n"
 | 
			
		||||
					"to add ones the server is using.\n"
 | 
			
		||||
					"Please restart SRB2 before connecting.\n\n"
 | 
			
		||||
					"Press ESC\n"
 | 
			
		||||
				), NULL, MM_NOTHING);
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			else if (i == 2) // cannot join for some reason
 | 
			
		||||
			{
 | 
			
		||||
				D_QuitNetGame();
 | 
			
		||||
				CL_Reset();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3080,6 +3080,11 @@ static void Got_RequestAddfilecmd(UINT8 **cp, INT32 playernum)
 | 
			
		|||
	boolean kick = false;
 | 
			
		||||
	boolean toomany = false;
 | 
			
		||||
	INT32 i;
 | 
			
		||||
	size_t packetsize = 0;
 | 
			
		||||
	serverinfo_pak *dummycheck = NULL;
 | 
			
		||||
 | 
			
		||||
	// Shut the compiler up.
 | 
			
		||||
	(void)dummycheck;
 | 
			
		||||
 | 
			
		||||
	READSTRINGN(*cp, filename, 240);
 | 
			
		||||
	READMEM(*cp, md5sum, 16);
 | 
			
		||||
| 
						 | 
				
			
			@ -3105,7 +3110,14 @@ static void Got_RequestAddfilecmd(UINT8 **cp, INT32 playernum)
 | 
			
		|||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (numwadfiles >= MAX_WADFILES) // a more comprehensive check in internal; bare minimum of out-of-bounds for public next
 | 
			
		||||
	// See W_LoadWadFile in w_wad.c
 | 
			
		||||
	for (i = 0; i < numwadfiles; i++)
 | 
			
		||||
		packetsize += nameonlylength(wadfiles[i]->filename) + 22;
 | 
			
		||||
 | 
			
		||||
	packetsize += nameonlylength(filename) + 22;
 | 
			
		||||
 | 
			
		||||
	if ((numwadfiles >= MAX_WADFILES)
 | 
			
		||||
	|| (packetsize > sizeof(dummycheck->fileneeded)))
 | 
			
		||||
		toomany = true;
 | 
			
		||||
	else
 | 
			
		||||
		ncs = findfile(filename,md5sum,true);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -330,6 +330,11 @@ INT32 CL_CheckFiles(void)
 | 
			
		|||
	INT32 i, j;
 | 
			
		||||
	char wadfilename[MAX_WADPATH];
 | 
			
		||||
	INT32 ret = 1;
 | 
			
		||||
	size_t packetsize = 0;
 | 
			
		||||
	serverinfo_pak *dummycheck = NULL;
 | 
			
		||||
 | 
			
		||||
	// Shut the compiler up.
 | 
			
		||||
	(void)dummycheck;
 | 
			
		||||
 | 
			
		||||
//	if (M_CheckParm("-nofiles"))
 | 
			
		||||
//		return 1;
 | 
			
		||||
| 
						 | 
				
			
			@ -378,6 +383,10 @@ INT32 CL_CheckFiles(void)
 | 
			
		|||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// See W_LoadWadFile in w_wad.c
 | 
			
		||||
	for (i = 0; i < numwadfiles; i++)
 | 
			
		||||
		packetsize += nameonlylength(wadfiles[i]->filename) + 22;
 | 
			
		||||
 | 
			
		||||
	for (i = 1; i < fileneedednum; i++)
 | 
			
		||||
	{
 | 
			
		||||
		CONS_Debug(DBG_NETPLAY, "searching for '%s' ", fileneeded[i].filename);
 | 
			
		||||
| 
						 | 
				
			
			@ -397,6 +406,12 @@ INT32 CL_CheckFiles(void)
 | 
			
		|||
		if (fileneeded[i].status != FS_NOTFOUND || !fileneeded[i].important)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		packetsize += nameonlylength(fileneeded[i].filename) + 22;
 | 
			
		||||
 | 
			
		||||
		if ((numwadfiles >= MAX_WADFILES)
 | 
			
		||||
		|| (packetsize > sizeof(dummycheck->fileneeded)))
 | 
			
		||||
			return 3;
 | 
			
		||||
 | 
			
		||||
		fileneeded[i].status = findfile(fileneeded[i].filename, fileneeded[i].md5sum, true);
 | 
			
		||||
		CONS_Debug(DBG_NETPLAY, "found %d\n", fileneeded[i].status);
 | 
			
		||||
		if (fileneeded[i].status != FS_FOUND)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue