Skip to content

Commit

Permalink
Merge pull request #34 from Yepoleb/duplicate
Browse files Browse the repository at this point in the history
Skip already yielded addresses in MasterServerQuerier
  • Loading branch information
Holiverh committed Aug 28, 2017
2 parents 7203f85 + 7e4f7fd commit b371a9b
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions valve/source/master_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ def _query(self, region, filter_string):
"""
last_addr = "0.0.0.0:0"
first_request = True
previous_addr = set()
while first_request or last_addr != "0.0.0.0:0":
first_request = False
self.request(messages.MasterServerRequest(region=region,
Expand All @@ -85,10 +86,15 @@ def _query(self, region, filter_string):
else:
response = messages.MasterServerResponse.decode(raw_response)
for address in response["addresses"]:
last_addr = "{}:{}".format(
address["host"], address["port"])
addr_tuple = (address["host"], address["port"])
if addr_tuple in previous_addr:
# Skip already yielded address
continue
else:
previous_addr.add(addr_tuple)
last_addr = "{}:{}".format(*addr_tuple)
if not address.is_null:
yield address["host"], address["port"]
yield addr_tuple

def _map_region(self, region):
"""Convert string to numeric region identifier
Expand Down

0 comments on commit b371a9b

Please sign in to comment.