about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-11-16 14:01:40 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-11-16 14:01:40 +0000
commit42553448f7fb8d3d9aaa615facaf872b5d54e229 (patch)
tree191391141170bb2a4af1557f21f874f636b7db10
parente27e2d8b2a65e1476b275bd35a1148253434f8f3 (diff)
downloadzcatch-42553448f7fb8d3d9aaa615facaf872b5d54e229.tar.gz
zcatch-42553448f7fb8d3d9aaa615facaf872b5d54e229.zip
fixed so it handles multiple packets from the masters
-rw-r--r--scripts/tw_api.py26
1 files changed, 16 insertions, 10 deletions
diff --git a/scripts/tw_api.py b/scripts/tw_api.py
index 6ef0cc6a..8077e3ee 100644
--- a/scripts/tw_api.py
+++ b/scripts/tw_api.py
@@ -61,17 +61,23 @@ def get_servers(address):
 		sock = socket(AF_INET, SOCK_DGRAM) 
 		sock.settimeout(1.5) 
 		sock.sendto("\x20\x00\x00\x00\x00\x00\xff\xff\xff\xffreqt", (address, master_port)) 
- 
-		data, addr = sock.recvfrom(1024) 
-		sock.close() 
-		data = data[14:] 
-		num_servers = len(data) / 6 
-		num_players = 0 
+		
+		while 1:
+			data, addr = sock.recvfrom(1024)
+			
+			data = data[14:] 
+			num_servers = len(data) / 6 
 
-		for n in range(0, num_servers): 
-			ip = ".".join(map(str, map(ord, data[n*6:n*6+4]))) 
-			port = ord(data[n*6+5]) * 256 + ord(data[n*6+4]) 
-			servers += [[ip, port]]
+			for n in range(0, num_servers): 
+				ip = ".".join(map(str, map(ord, data[n*6:n*6+4]))) 
+				port = ord(data[n*6+5]) * 256 + ord(data[n*6+4]) 
+				servers += [[ip, port]]
+			
+			# and we are done
+			if num_servers < 128:
+				break
+			
+		sock.close()
 
 		return servers
 	except: