about summary refs log tree commit diff
path: root/src/engine/server
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-10-17 21:16:23 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-10-17 21:16:23 +0000
commita91fecae920e1b6d9ca3dbdbf6251c11bd751d7c (patch)
treeb65cc2df8ee5ad78fb819c0f985497528c5521db /src/engine/server
parenteb47aa385bb02d977c9ee759c2b7987951c16953 (diff)
downloadzcatch-a91fecae920e1b6d9ca3dbdbf6251c11bd751d7c.tar.gz
zcatch-a91fecae920e1b6d9ca3dbdbf6251c11bd751d7c.zip
fixed fetching of server info and corrected some spelling errors
Diffstat (limited to 'src/engine/server')
-rw-r--r--src/engine/server/es_server.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/engine/server/es_server.c b/src/engine/server/es_server.c
index 5ff58dbe..2ef676a3 100644
--- a/src/engine/server/es_server.c
+++ b/src/engine/server/es_server.c
@@ -852,11 +852,19 @@ static void server_send_serverinfo(NETADDR *addr, int token)
 	}
 	
 	packer_reset(&p);
-	packer_add_raw(&p, SERVERBROWSE_INFO, sizeof(SERVERBROWSE_INFO));
 
-	/* token */
-	str_format(buf, sizeof(buf), "%d", token);
-	packer_add_string(&p, buf, 6);
+	if(token >= 0)
+	{
+		/* new token based format */
+		packer_add_raw(&p, SERVERBROWSE_INFO, sizeof(SERVERBROWSE_INFO));
+		str_format(buf, sizeof(buf), "%d", token);
+		packer_add_string(&p, buf, 6);
+	}
+	else
+	{
+		/* old format */
+		packer_add_raw(&p, SERVERBROWSE_OLD_INFO, sizeof(SERVERBROWSE_OLD_INFO));
+	}
 	
 	packer_add_string(&p, mods_version(), 32);
 	packer_add_string(&p, config.sv_name, 64);
@@ -921,6 +929,13 @@ static void server_pump_network()
 				{
 					server_send_serverinfo(&packet.address, ((unsigned char *)packet.data)[sizeof(SERVERBROWSE_GETINFO)]);
 				}
+				
+				
+				if(packet.data_size == sizeof(SERVERBROWSE_OLD_GETINFO) &&
+					memcmp(packet.data, SERVERBROWSE_OLD_GETINFO, sizeof(SERVERBROWSE_OLD_GETINFO)) == 0)
+				{
+					server_send_serverinfo(&packet.address, -1);
+				}
 			}
 		}
 		else