From 44fb8f49b693b6d8c0f9ab3b24558b32508a9493 Mon Sep 17 00:00:00 2001 From: Thilo Schulz Date: Sun, 6 Feb 2011 17:59:23 +0000 Subject: [PATCH] Fix adding multiple entries for same server when using globalservers several times, patch by Tequila --- code/client/cl_main.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/code/client/cl_main.c b/code/client/cl_main.c index 5cbd6498..a4db7f21 100644 --- a/code/client/cl_main.c +++ b/code/client/cl_main.c @@ -2239,7 +2239,7 @@ CL_ServersResponsePacket =================== */ void CL_ServersResponsePacket( const netadr_t* from, msg_t *msg, qboolean extended ) { - int i, count, total; + int i, j, count, total; netadr_t addresses[MAX_SERVERSPERPACKET]; int numservers; byte* buffptr; @@ -2320,6 +2320,18 @@ void CL_ServersResponsePacket( const netadr_t* from, msg_t *msg, qboolean extend // build net address serverInfo_t *server = &cls.globalServers[count]; + // Tequila: It's possible to have sent many master server requests. Then + // we may receive many times the same addresses from the master server. + // We just avoid to add a server if it is still in the global servers list. + for (j = 0; j < count; j++) + { + if (NET_CompareAdr(cls.globalServers[j].adr, addresses[i])) + break; + } + + if (j < count) + continue; + CL_InitServerInfo( server, &addresses[i] ); // advance to next slot count++;