From 124e69be6095b655e72e8aeadbbe69023470abe2 Mon Sep 17 00:00:00 2001 From: toaster Date: Sat, 2 Sep 2023 17:01:23 +0100 Subject: [PATCH] SL_InsertServer: Behaviour repair for multiple contexts - Repair connecting to a modded server via direct IP/address - Done by leveraging serverlistultimatecount - !server was good for avoiding dinging modded local games, but there was other behaviour broken. - Don't underflow serverlistultimatecount on rejection of undesired serverinfo --- src/d_clisrv.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index f17e16470..b4f056b0e 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -1609,8 +1609,8 @@ static boolean SL_InsertServer(serverinfo_pak* info, SINT8 node) if (strcmp(info->application, SRB2APPLICATION)) return false;/* that's a different mod */ - if (!server && info->modifiedgame != (mpmenu.room == 1)) - return false;/* CORE vs MODDED! Unless we ARE the server (i.e. local play), then it's fine to not match. */ + if (serverlistultimatecount && info->modifiedgame != (mpmenu.room == 1)) + return false;/* CORE vs MODDED! But only on the server browser page. */ i = serverlistcount++; } @@ -4658,8 +4658,13 @@ static void HandleServerInfo(SINT8 node) CopyCaretColors(netbuffer->u.serverinfo.servername, servername, MAXSERVERNAME); // If we have cause to reject it, it's not worth observing. - if (SL_InsertServer(&netbuffer->u.serverinfo, node) == false) + if ( + SL_InsertServer(&netbuffer->u.serverinfo, node) == false + && serverlistultimatecount + ) + { serverlistultimatecount--; + } } static void PT_WillResendGamestate(void)