network: get_servers to always include recent servers
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user