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. 13
      electrum/network.py

13
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,10 +397,9 @@ 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()))
else:
for s in self.recent_servers: for s in self.recent_servers:
try: try:
host, port, protocol = deserialize_server(s) host, port, protocol = deserialize_server(s)
@ -408,6 +407,10 @@ class Network(PrintError):
continue continue
if host not in out: if host not in out:
out[host] = {protocol: port} out[host] = {protocol: port}
# add servers received from main interface
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