about summary refs log tree commit diff
path: root/src/engine/client/ec_client.c
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-09-04 17:25:55 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-09-04 17:25:55 +0000
commit8d99a3d3c9c4142955bdc7ec994dce61b4eb8d15 (patch)
tree9cbd6a3d820aa3a6068b8e970ceafeaa9b4a2b71 /src/engine/client/ec_client.c
parent171ca682d3edbe641ccc26cba7f5991206ae9041 (diff)
downloadzcatch-8d99a3d3c9c4142955bdc7ec994dce61b4eb8d15.tar.gz
zcatch-8d99a3d3c9c4142955bdc7ec994dce61b4eb8d15.zip
fixed so old request methods work aswell
Diffstat (limited to 'src/engine/client/ec_client.c')
-rw-r--r--src/engine/client/ec_client.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/engine/client/ec_client.c b/src/engine/client/ec_client.c
index 1d514d95..26846d73 100644
--- a/src/engine/client/ec_client.c
+++ b/src/engine/client/ec_client.c
@@ -719,7 +719,6 @@ static void client_process_packet(NETCHUNK *packet)
 			for(i = 0; i < num; i++)
 			{
 				NETADDR addr;
-				SERVER_INFO info = {0};
 				
 				/* convert address */
 				mem_zero(&addr, sizeof(addr));
@@ -729,21 +728,20 @@ static void client_process_packet(NETCHUNK *packet)
 				addr.ip[2] = addrs[i].ip[2];
 				addr.ip[3] = addrs[i].ip[3];
 				addr.port = (addrs[i].port[1]<<8) | addrs[i].port[0];
-
-				info.latency = 999;
-				str_format(info.address, sizeof(info.address), "%d.%d.%d.%d:%d",
-					addr.ip[0], addr.ip[1], addr.ip[2],
-					addr.ip[3], addr.port);
-				str_format(info.name, sizeof(info.name), "\255%d.%d.%d.%d:%d", /* the \255 is to make sure that it's sorted last */
-					addr.ip[0], addr.ip[1], addr.ip[2],
-					addr.ip[3], addr.port);
 				
-				client_serverbrowse_set(&addr, 1, -1, &info);
+				client_serverbrowse_set(&addr, BROWSESET_MASTER_ADD, -1, NULL);
 			}
 		}
 
 		{
+			int packet_type = 0;
 			if(packet->data_size >= (int)sizeof(SERVERBROWSE_INFO) && memcmp(packet->data, SERVERBROWSE_INFO, sizeof(SERVERBROWSE_INFO)) == 0)
+				packet_type = 2;
+
+			if(packet->data_size >= (int)sizeof(SERVERBROWSE_OLD_INFO) && memcmp(packet->data, SERVERBROWSE_OLD_INFO, sizeof(SERVERBROWSE_OLD_INFO)) == 0)
+				packet_type = 1;
+			
+			if(packet_type)
 			{
 				/* we got ze info */
 				UNPACKER up;
@@ -752,7 +750,8 @@ static void client_process_packet(NETCHUNK *packet)
 				int token = -1;
 				
 				unpacker_reset(&up, (unsigned char*)packet->data+sizeof(SERVERBROWSE_INFO), packet->data_size-sizeof(SERVERBROWSE_INFO));
-				token = atol(unpacker_get_string(&up));
+				if(packet_type >= 2)
+					token = atol(unpacker_get_string(&up));
 				str_copy(info.version, unpacker_get_string(&up), sizeof(info.version));
 				str_copy(info.name, unpacker_get_string(&up), sizeof(info.name));
 				str_copy(info.map, unpacker_get_string(&up), sizeof(info.map));
@@ -775,7 +774,10 @@ static void client_process_packet(NETCHUNK *packet)
 				{
 					/* sort players */
 					qsort(info.players, info.num_players, sizeof(*info.players), player_score_comp);
-					client_serverbrowse_set(&packet->address, 0, token, &info);
+					if(packet_type == 2)
+						client_serverbrowse_set(&packet->address, BROWSESET_TOKEN, token, &info);
+					else
+						client_serverbrowse_set(&packet->address, BROWSESET_OLD_INTERNET, -1, &info);
 				}
 			}
 		}