1
0

network: get_servers to always include recent servers

This commit is contained in:
SomberNight
2018-09-13 16:06:41 +02:00
parent 43664d5f11
commit 78e9152723

View File

@@ -201,7 +201,7 @@ class Network(PrintError):
self.recent_servers_lock = threading.RLock() # <- re-entrant self.recent_servers_lock = threading.RLock() # <- re-entrant
self.blockchains_lock = threading.Lock() self.blockchains_lock = threading.Lock()
self.irc_servers = {} # returned by interface (list from irc) self.server_peers = {} # returned by interface (servers that the main interface knows about)
self.recent_servers = self.read_recent_servers() # note: needs self.recent_servers_lock self.recent_servers = self.read_recent_servers() # note: needs self.recent_servers_lock
self.banner = '' self.banner = ''
@@ -324,7 +324,7 @@ class Network(PrintError):
async def get_donation_address(): async def get_donation_address():
self.donation_address = await session.send_request('server.donation_address') self.donation_address = await session.send_request('server.donation_address')
async def get_server_peers(): async def get_server_peers():
self.irc_servers = parse_servers(await session.send_request('server.peers.subscribe')) self.server_peers = parse_servers(await session.send_request('server.peers.subscribe'))
self.notify('servers') self.notify('servers')
async def get_relay_fee(): async def get_relay_fee():
relayfee = await session.send_request('blockchain.relayfee') relayfee = await session.send_request('blockchain.relayfee')
@@ -397,17 +397,20 @@ class Network(PrintError):
@with_recent_servers_lock @with_recent_servers_lock
def get_servers(self): def get_servers(self):
# start with hardcoded servers
out = constants.net.DEFAULT_SERVERS out = constants.net.DEFAULT_SERVERS
if self.irc_servers: # add recent servers
out.update(filter_version(self.irc_servers.copy())) for s in self.recent_servers:
else: try:
for s in self.recent_servers: host, port, protocol = deserialize_server(s)
try: except:
host, port, protocol = deserialize_server(s) continue
except: if host not in out:
continue out[host] = {protocol: port}
if host not in out: # add servers received from main interface
out[host] = {protocol: port} if self.server_peers:
out.update(filter_version(self.server_peers.copy()))
# potentially filter out some
if self.config.get('noonion'): if self.config.get('noonion'):
out = filter_noonion(out) out = filter_noonion(out)
return out return out