From b539a87e72c434be988a405a67e1f02868e5f767 Mon Sep 17 00:00:00 2001
From: Tim Angus <tim@ngus.net>
Date: Thu, 15 Oct 2009 23:39:19 +0000
Subject: [PATCH] * (bug #4232) Avoid "cl.snap.serverTime <
 cl.oldFrameServerTime" for slow   loading clients combined with short
 g_warmups

---
 code/server/sv_ccmds.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/code/server/sv_ccmds.c b/code/server/sv_ccmds.c
index 56a510ff..8802b3c7 100644
--- a/code/server/sv_ccmds.c
+++ b/code/server/sv_ccmds.c
@@ -278,6 +278,15 @@ static void SV_MapRestart_f( void ) {
 	sv.serverId = com_frameTime;
 	Cvar_Set( "sv_serverid", va("%i", sv.serverId ) );
 
+	// if a map_restart occurs while a client is changing maps, we need
+	// to give them the correct time so that when they finish loading
+	// they don't violate the backwards time check in cl_cgame.c
+	for (i=0 ; i<sv_maxclients->integer ; i++) {
+		if (svs.clients[i].state >= CS_CONNECTED) {
+			svs.clients[i].oldServerTime = sv.restartTime;
+		}
+	}
+
 	// reset all the vm data in place without changing memory allocation
 	// note that we do NOT set sv.state = SS_LOADING, so configstrings that
 	// had been changed from their default values will generate broadcast updates