From 0e1e8f0691eccbc887a1900a699dd2f5a8858290 Mon Sep 17 00:00:00 2001 From: minus Date: Fri, 19 Sep 2014 10:08:08 +0200 Subject: [PATCH] added hostname support to Address --- teeworlds/base.py | 7 +++++-- teeworlds/teeworlds.py | 15 ++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/teeworlds/base.py b/teeworlds/base.py index 1573cee..108fc65 100644 --- a/teeworlds/base.py +++ b/teeworlds/base.py @@ -15,7 +15,7 @@ L = logging.getLogger(__name__) def get_address(host, port=8303, family=0): try: info = socket.getaddrinfo(host, port, family, socket.SOCK_DGRAM) - return Address(info[0][4][0], info[0][4][1], family) + return Address(info[0][4][0], info[0][4][1], family, hostname=host) except socket.gaierror as e: L.warning('getaddrinfo failed: ' + str(e)) return None @@ -54,10 +54,13 @@ def listdata2addresslist(listdata): class Address(object): - def __init__(self, host=None, port=None, family=None): + def __init__(self, host=None, port=None, family=None, hostname=None): self.host = host self.port = port self.family = family + self.hostname = hostname + if not hostname: + self.hostname = host def address_tuple(self): return (self.host, self.port) diff --git a/teeworlds/teeworlds.py b/teeworlds/teeworlds.py index f4d6849..482af8c 100644 --- a/teeworlds/teeworlds.py +++ b/teeworlds/teeworlds.py @@ -25,16 +25,21 @@ L = logging.getLogger(__name__) from .base import get_address from .master import MasterServer - -def create_masters(eventsocket, hostnames=["master{}.teeworlds.com".format(i+1) for i in range(4)], master_factory=MasterServer): +def get_master_addresses(hostnames=["master{}.teeworlds.com".format(i+1) for i in range(4)]): masterlist = [] for mastername in hostnames: # resolves host and picks the first address master_addr = get_address(mastername, port=8300) if master_addr: - L.debug("requesting {} ({})".format(mastername, master_addr)) - master = master_factory(eventsocket, master_addr, mastername.partition(".")[0]) - masterlist.append(master) + masterlist.append(get_address(mastername, port=8300)) + return masterlist + +def create_masters(eventsocket, addresses=get_master_addresses(), master_factory=MasterServer): + masterlist = [] + for master_addr in addresses: + L.debug("requesting {} ({})".format(master_addr.hostname, master_addr)) + master = master_factory(eventsocket, master_addr, master_addr.hostname) + masterlist.append(master) return masterlist def query_masters_serverlist(masterlist): -- GitLab