From: molivier Date: Mon, 4 Apr 2005 14:51:56 +0000 (+0000) Subject: Fixed getserversResponse parsing: X-Git-Tag: xonotic-v0.1.0preview~5025 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=6f4bdacc137d137d64882beb27d6dc0091de0f0e;p=xonotic%2Fdarkplaces.git Fixed getserversResponse parsing: * serverquerycount was incremented even when it didn't query this server * if the list contained a server that was already queried, the remaining servers were ignored git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@5152 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/netconn.c b/netconn.c index 09e7d059..acbc3a81 100755 --- a/netconn.c +++ b/netconn.c @@ -1016,8 +1016,6 @@ int NetConn_ClientParsePacket(lhnetsocket_t *mysocket, qbyte *data, int length, { int n; - serverquerycount++; - dpsnprintf (ipstring, sizeof (ipstring), "%u.%u.%u.%u:%u", data[1], data[2], data[3], data[4], (data[5] << 8) | data[6]); if (developer.integer) Con_Printf("Requesting info from server %s\n", ipstring); @@ -1028,22 +1026,24 @@ int NetConn_ClientParsePacket(lhnetsocket_t *mysocket, qbyte *data, int length, for( n = 0 ; n < serverlist_cachecount ; n++ ) if( !strcmp( ipstring, serverlist_cache[ n ].info.cname ) ) break; - if( n < serverlist_cachecount ) - break; + if( n >= serverlist_cachecount ) + { + serverquerycount++; - LHNETADDRESS_FromString(&svaddress, ipstring, 0); - NetConn_WriteString(mysocket, "\377\377\377\377getinfo", &svaddress); + LHNETADDRESS_FromString(&svaddress, ipstring, 0); + NetConn_WriteString(mysocket, "\377\377\377\377getinfo", &svaddress); - memset(&serverlist_cache[serverlist_cachecount], 0, sizeof(serverlist_cache[serverlist_cachecount])); - // store the data the engine cares about (address and ping) - strlcpy (serverlist_cache[serverlist_cachecount].info.cname, ipstring, sizeof (serverlist_cache[serverlist_cachecount].info.cname)); - serverlist_cache[serverlist_cachecount].info.ping = 100000; - serverlist_cache[serverlist_cachecount].querytime = realtime; - // if not in the slist menu we should print the server to console - if (serverlist_consoleoutput) - Con_Printf("querying %s\n", ipstring); + memset(&serverlist_cache[serverlist_cachecount], 0, sizeof(serverlist_cache[serverlist_cachecount])); + // store the data the engine cares about (address and ping) + strlcpy (serverlist_cache[serverlist_cachecount].info.cname, ipstring, sizeof (serverlist_cache[serverlist_cachecount].info.cname)); + serverlist_cache[serverlist_cachecount].info.ping = 100000; + serverlist_cache[serverlist_cachecount].querytime = realtime; + // if not in the slist menu we should print the server to console + if (serverlist_consoleoutput) + Con_Printf("querying %s\n", ipstring); - ++serverlist_cachecount; + ++serverlist_cachecount; + } // move on to next address in packet data += 7;