URI: 
       tnetwork: get_servers to always include recent servers - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 78e9152723ad3c4f35f6e82f8be045be35a2afa4
   DIR parent 43664d5f113992062ffc33c2f63ebd485069e6aa
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Thu, 13 Sep 2018 16:06:41 +0200
       
       network: get_servers to always include recent servers
       
       Diffstat:
         M electrum/network.py                 |      27 +++++++++++++++------------
       
       1 file changed, 15 insertions(+), 12 deletions(-)
       ---
   DIR diff --git a/electrum/network.py b/electrum/network.py
       t@@ -201,7 +201,7 @@ class Network(PrintError):
                self.recent_servers_lock = threading.RLock()       # <- re-entrant
                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.banner = ''
       t@@ -324,7 +324,7 @@ class Network(PrintError):
                async def get_donation_address():
                    self.donation_address = await session.send_request('server.donation_address')
                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')
                async def get_relay_fee():
                    relayfee = await session.send_request('blockchain.relayfee')
       t@@ -397,17 +397,20 @@ class Network(PrintError):
        
            @with_recent_servers_lock
            def get_servers(self):
       +        # start with hardcoded servers
                out = constants.net.DEFAULT_SERVERS
       -        if self.irc_servers:
       -            out.update(filter_version(self.irc_servers.copy()))
       -        else:
       -            for s in self.recent_servers:
       -                try:
       -                    host, port, protocol = deserialize_server(s)
       -                except:
       -                    continue
       -                if host not in out:
       -                    out[host] = {protocol: port}
       +        # add recent servers
       +        for s in self.recent_servers:
       +            try:
       +                host, port, protocol = deserialize_server(s)
       +            except:
       +                continue
       +            if host not in out:
       +                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'):
                    out = filter_noonion(out)
                return out