diff --git a/gamespy_backend_server.py b/gamespy_backend_server.py index a87e805..96531b0 100644 --- a/gamespy_backend_server.py +++ b/gamespy_backend_server.py @@ -388,11 +388,11 @@ class GameSpyBackendServer(object): # Search all servers for gameid in self.server_list: for server in self.server_list[gameid]: - if server['publicip'] == ip and server['publicport'] == str(port): + if server['publicip'] == ip and (port == 0 or server['publicport'] == str(port)): return server else: for server in self.server_list[gameid]: - if server['publicip'] == ip and server['publicport'] == str(port): + if server['publicip'] == ip and (port == 0 or server['publicport'] == str(port)): return server return None diff --git a/gamespy_qr_server.py b/gamespy_qr_server.py index 81237c4..148f68b 100644 --- a/gamespy_qr_server.py +++ b/gamespy_qr_server.py @@ -260,7 +260,12 @@ class GameSpyQRServer(object): k['publicip'] = str(ctypes.c_int32(utils.get_int(bytearray([int(x) for x in address[0].split('.')]), 0)).value) # DS if "statechanged" in k: - if k['statechanged'] == "1": # Create server + if k['statechanged'] == "2": # Close server + self.server_manager.delete_server(k['gamename'] , session_id) + + if session_id in self.sessions: + self.sessions.pop(session_id) + else: #if k['statechanged'] == "1": # Create server #if k['publicport'] != "0" and k['publicip'] != "0": # dwc_mtype controls what kind of server query we're looking for. # dwc_mtype = 0 is used when looking for a matchmaking game. @@ -273,11 +278,6 @@ class GameSpyQRServer(object): if session_id in self.sessions: self.sessions[session_id].gamename = k['gamename'] - elif k['statechanged'] == "2": # Close server - self.server_manager.delete_server(k['gamename'] , session_id) - - if session_id in self.sessions: - self.sessions.pop(session_id) elif recv_data[0] == '\x04': # Add Error