From c4c0ebb659ad7db8510136540f2b4ffc3dee2ea1 Mon Sep 17 00:00:00 2001 From: polaris Date: Mon, 2 Jun 2014 07:18:44 -0400 Subject: [PATCH] Return local port if public port is set to 0 This should hopefully fix Puyo Puyo!! 20th Anniversary and Tatsunoko vs Capcom's matchmaking. Without it, the games will not recognize their own servers. --- gamespy_server_browser_server.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gamespy_server_browser_server.py b/gamespy_server_browser_server.py index 2e82439..bef66d0 100644 --- a/gamespy_server_browser_server.py +++ b/gamespy_server_browser_server.py @@ -290,7 +290,11 @@ class Session(LineReceiver): flags_buffer += ip flags |= ServerListFlags.NONSTANDARD_PORT_FLAG - flags_buffer += utils.get_bytes_from_short_be(int(server_info['publicport'])) + + if server_info['publicport'] != "0": + flags_buffer += utils.get_bytes_from_short_be(int(server_info['publicport'])) + else: + flags_buffer += utils.get_bytes_from_short_be(int(server_info['localport'])) if "localip0" in server_info: # How to handle multiple localips? @@ -301,8 +305,8 @@ class Session(LineReceiver): flags |= ServerListFlags.NONSTANDARD_PRIVATE_PORT_FLAG flags_buffer += utils.get_bytes_from_short_be(int(server_info['localport'])) - #flags |= ServerListFlags.ICMP_IP_FLAG - #flags_buffer += bytearray([int(x) for x in "0.0.0.0".split('.')]) + flags |= ServerListFlags.ICMP_IP_FLAG + flags_buffer += bytearray([int(x) for x in "0.0.0.0".split('.')]) output += bytearray([flags & 0xff]) output += flags_buffer