Failure to poll a servers means we treat it like it's offline.
This commit is contained in:
parent
d139364722
commit
15463a851a
@ -24,16 +24,17 @@ def poll_ss13_server(server, timeout=30):
|
|||||||
sock.sendall(query)
|
sock.sendall(query)
|
||||||
response = sock.recv(1024)
|
response = sock.recv(1024)
|
||||||
sock.close()
|
sock.close()
|
||||||
assert(len(response) > 0)
|
assert(len(response) >= 9)
|
||||||
assert(response[:5] == '\x00\x83\x00\x05\x2a')
|
assert(response[:5] == '\x00\x83\x00\x05\x2a')
|
||||||
tmp = struct.unpack('f', response[5:9])
|
players = int(struct.unpack('f', response[5:9])[0])
|
||||||
return int(tmp[0]), server
|
assert(players >= 0)
|
||||||
|
return players, server
|
||||||
except (socket.timeout, AssertionError) as e:
|
except (socket.timeout, AssertionError) as e:
|
||||||
try:
|
try:
|
||||||
sock.close()
|
sock.close()
|
||||||
except UnboundLocalError:
|
except UnboundLocalError:
|
||||||
pass
|
pass
|
||||||
return 0, server
|
return -1, server
|
||||||
|
|
||||||
|
|
||||||
class ServerPoller(object):
|
class ServerPoller(object):
|
||||||
@ -69,6 +70,10 @@ class ServerPoller(object):
|
|||||||
|
|
||||||
def _handle_future(self, future):
|
def _handle_future(self, future):
|
||||||
players, server = future.get()
|
players, server = future.get()
|
||||||
|
if players == -1:
|
||||||
|
# Couldn't get a proper update from the server when polling it,
|
||||||
|
# consider it offline for now
|
||||||
|
return
|
||||||
server = dict(
|
server = dict(
|
||||||
title = server.title,
|
title = server.title,
|
||||||
game_url = 'byond://{}:{}'.format(server.host, server.port),
|
game_url = 'byond://{}:{}'.format(server.host, server.port),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user