Package: qstat
Version: 2.15-1
Severity: normal
Tags: patch

Hello,

querying Teeworlds servers does not work with 2.15.

Please find attached a patch that fixes the issue for the 0.6.x
protocol versions.

Regards,

Markus


-- System Information:
Debian Release: 8.0
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 3.16.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages qstat depends on:
ii  libc6  2.19-13

qstat recommends no packages.

qstat suggests no packages.

-- no debconf information
diff --git a/qstat.h b/qstat.h
index 1976923..d562214 100644
--- a/qstat.h
+++ b/qstat.h
@@ -872,7 +872,7 @@ char ottd_serverdetails[] = {
 
 /* Teeworlds */
 
-char tee_serverstatus[14] = { '\x20', '\0', '\0', '\0', '\0', '\0', '\xFF', '\xFF', '\xFF', '\xFF', 'g', 'i', 'e', 'f' };
+char tee_serverstatus[15] = { '\x20', '\0', '\0', '\0', '\0', '\0', '\xFF', '\xFF', '\xFF', '\xFF', 'g', 'i', 'e', '3', '\x02' };
 
 /* Cube2 */
 
diff --git a/tee.c b/tee.c
index bc9b400..2097bf9 100644
--- a/tee.c
+++ b/tee.c
@@ -17,7 +17,7 @@
 #include "qstat.h"
 #include "packet_manip.h"
 
-char tee_serverinfo[8] = { '\xFF', '\xFF', '\xFF', '\xFF', 'i', 'n', 'f', 'o' };
+char tee_serverinfo[9] = { '\xFF', '\xFF', '\xFF', '\xFF', 'i', 'n', 'f', '3' };
 
 query_status_t send_tee_request_packet( struct qserver *server )
 {
@@ -37,6 +37,8 @@ query_status_t deal_with_tee_packet( struct qserver *server, char *rawpkt, int p
 	if (0 == memcmp( pkt, tee_serverinfo, 8)) 
 	{
 		pkt += 8;
+		// unknown
+		pkt += strlen(pkt) + 1;
 		// version
 		version = strdup(pkt); pkt += strlen(pkt) + 1;
 		// server name
@@ -60,17 +62,27 @@ query_status_t deal_with_tee_packet( struct qserver *server, char *rawpkt, int p
 		}
 		pkt += strlen(pkt) + 1; 
 		pkt += strlen(pkt) + 1;
-		pkt += strlen(pkt) + 1;
+//		pkt += strlen(pkt) + 1;
 		// num players
 		server->num_players = atoi(pkt); pkt += strlen(pkt) + 1;
 		// max players
 		server->max_players = atoi(pkt); pkt += strlen(pkt) + 1;
+		// num clients
+		pkt += strlen(pkt) + 1;
+		// max clients
+		pkt += strlen(pkt) + 1;
 		// players
 		for(i = 0; i < server->num_players; i++)
 		{
 			player = add_player( server, i );
 			player->name = strdup(pkt); pkt += strlen(pkt) + 1;
+			// clan
+			pkt += strlen(pkt) + 1;
+			// country
+			pkt += strlen(pkt) + 1;
 			player->score = atoi(pkt); pkt += strlen(pkt) + 1;
+			// is player
+			pkt += strlen(pkt) + 1;
 		}
 		// version reprise
 		server->protocol_version = 0;

Reply via email to