electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 68580164110bc0f72b38527b508345d8eacda73f
parent b3f1f04312210a8c7009302850d4f80267545392
Author: ThomasV <electrumdev@gmail.com>
Date:   Fri, 22 May 2015 06:58:50 +0200

Merge pull request #1225 from kyuupichan/net-interface

Consistency in handling of self.interface
Diffstat:
Mlib/network.py | 40+++++++++++++++++++---------------------
1 file changed, 19 insertions(+), 21 deletions(-)

diff --git a/lib/network.py b/lib/network.py @@ -278,12 +278,10 @@ class Network(util.DaemonThread): return out def start_interface(self, server): - if server in self.interfaces.keys(): - return - i = interface.Interface(server, self.queue, self.config) - self.pending_servers.add(server) - i.start() - return i + if not server in self.interfaces.keys(): + i = interface.Interface(server, self.queue, self.config) + self.pending_servers.add(server) + i.start() def start_random_interface(self): server = self.random_server() @@ -291,13 +289,12 @@ class Network(util.DaemonThread): self.start_interface(server) def start_interfaces(self): - self.interface = self.start_interface(self.default_server) - for i in range(self.num_server): + self.start_interface(self.default_server) + for i in range(self.num_server - 1): self.start_random_interface() def start(self): self.running = True - self.start_interfaces() self.blockchain.start() util.DaemonThread.start(self) @@ -320,6 +317,7 @@ class Network(util.DaemonThread): self.disconnected_servers = set([]) self.protocol = protocol self.set_proxy(proxy) + self.start_interfaces() def stop_network(self): # FIXME: this forgets to handle pending servers... @@ -351,15 +349,16 @@ class Network(util.DaemonThread): while self.interfaces: i = random.choice(self.interfaces.values()) if i.is_connected(): - self.switch_to_interface(i) + self.switch_to_interface(i.server) break else: self.remove_interface(i) - def switch_to_interface(self, interface): - server = interface.server + def switch_to_interface(self, server): + '''Switch to server as our interface, it must be in self.interfaces''' + assert server in self.interfaces self.print_error("switching to", server) - self.interface = interface + self.interface = self.interfaces[server] self.default_server = server self.send_subscriptions() self.set_status('connected') @@ -368,7 +367,7 @@ class Network(util.DaemonThread): def stop_interface(self): self.interface.stop() - + self.interface = None def set_server(self, server): if self.default_server == server and self.is_connected(): @@ -387,9 +386,9 @@ class Network(util.DaemonThread): self.default_server = server if server in self.interfaces.keys(): - self.switch_to_interface( self.interfaces[server] ) + self.switch_to_interface(server) else: - self.interface = self.start_interface(server) + self.start_interface(server) def add_recent_server(self, i): @@ -425,9 +424,8 @@ class Network(util.DaemonThread): self.add_interface(i) self.add_recent_server(i) i.send_request({'method':'blockchain.headers.subscribe','params':[]}) - if i == self.interface: - self.send_subscriptions() - self.set_status('connected') + if i.server == self.default_server: + self.switch_to_interface(i.server) else: if i.server in self.interfaces: self.remove_interface(i) @@ -509,7 +507,7 @@ class Network(util.DaemonThread): self.switch_to_random_interface() else: if self.default_server in self.interfaces.keys(): - self.switch_to_interface(self.interfaces[self.default_server]) + self.switch_to_interface(self.default_server) else: if self.default_server in self.disconnected_servers: if now - self.server_retry_time > SERVER_RETRY_INTERVAL: @@ -518,7 +516,7 @@ class Network(util.DaemonThread): else: if self.default_server not in self.pending_servers: self.print_error("forcing reconnection") - self.interface = self.start_interface(self.default_server) + self.start_interface(self.default_server) def run(self): while self.is_running():