mirror of
https://github.com/barronwaffles/dwc_network_server_emulator.git
synced 2026-08-25 20:16:06 -05:00
Small fixes
- Sometimes the game sends port 0 as the port to forward to. Obviously this isn't right, so *try* to match up the server with something, even if it may or may not be right. Hopefully it's right. - Tried to fix friends games in some games. Metroid Prime: Hunters seems to look for the dwc_pid for a friend, and sometimes the friend never does a statechanged, so assume that any state except 2 should be added to the server list.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user