From 499bb56436c7571d3247a5a813af2a84a58c5913 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Tue, 27 Oct 2020 01:22:31 +0100 Subject: [PATCH] Only resend the gamestate to one client at a time --- src/d_clisrv.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 0823f3c8a..af7907e67 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -1391,6 +1391,16 @@ static boolean SV_SendServerConfig(INT32 node) #ifndef NONET #define SAVEGAMESIZE (768*1024) +static boolean SV_ResendingSavegameToAnyone(void) +{ + INT32 i; + + for (i = 0; i < MAXNETNODES; i++) + if (resendingsavegame[i]) + return true; + return false; +} + static void SV_SendSaveGame(INT32 node, boolean resending) { size_t length, compressedlen; @@ -4074,7 +4084,8 @@ static void HandlePacketFromPlayer(SINT8 node) // Check player consistancy during the level if (realstart <= gametic && realstart + BACKUPTICS - 1 > gametic && gamestate == GS_LEVEL && consistancy[realstart%BACKUPTICS] != SHORT(netbuffer->u.clientpak.consistancy) - && !resendingsavegame[node] && savegameresendcooldown[node] <= I_GetTime()) + && !resendingsavegame[node] && savegameresendcooldown[node] <= I_GetTime() + && !SV_ResendingSavegameToAnyone()) { if (cv_resynchattempts.value) {