Browse Source

network: get_servers to always include recent servers

master
SomberNight 7 years ago
parent
commit
78e9152723
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 27
      electrum/network.py

27
electrum/network.py

@ -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

Loading…
Cancel
Save