electrum

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

commit 77871b97af2a7f9fceccf3bf2a62652414e6ff51
parent 79645e9b37702010684ae3c712183826786f0f50
Author: thomasv <thomasv@gitorious>
Date:   Tue, 10 Sep 2013 19:59:58 +0200

fixes, resend_subscriptions

Diffstat:
Mgui/network_dialog.py | 14+++++++++++---
Mlib/blockchain.py | 4++--
Mlib/interface.py | 2+-
Mlib/network.py | 15++++++++++++---
4 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/gui/network_dialog.py b/gui/network_dialog.py @@ -44,10 +44,18 @@ class NetworkDialog(QDialog): self.protocol = None if parent: - if interface.is_connected: - status = _("Connected to")+" %s"%(interface.host) + "\n%d "%(network.blockchain.height)+_("blocks") + n = len(network.interfaces) + if n: + status = _("Connected to %d servers")%n + ", %d "%(network.blockchain.height) + _("blocks") else: status = _("Not connected") + + if interface.is_connected: + status += "\n" + _("History server:") + " %s"%(interface.host) + else: + status += "\n" + _("History server is disconnected") + + server = interface.server else: import random @@ -229,6 +237,6 @@ class NetworkDialog(QDialog): self.config.set_key("proxy", proxy, True) self.config.set_key("server", server, True) - self.interface.set_server(server, proxy) + self.network.set_server(server, proxy) self.config.set_key('auto_cycle', self.autocycle_cb.isChecked(), True) return True diff --git a/lib/blockchain.py b/lib/blockchain.py @@ -93,8 +93,8 @@ class Blockchain(threading.Thread): self.network.trigger_callback('updated') h = self.servers_height.get(self.network.interface.server) - if h is not None and h < height: - print "server is lagging", height - i.network.interface.height + if h is not None and h < height - 1: + print "server is lagging", height, h self.network.interface.stop() diff --git a/lib/interface.py b/lib/interface.py @@ -129,7 +129,7 @@ class Interface(threading.Thread): with self.lock: method, params, channel = self.unanswered_requests.pop(msg_id) response_queue = self.responses[channel] - response_queue.put({'method':method, 'params':params, 'error':error, 'id':msg_id}) + response_queue.put((self,{'method':method, 'params':params, 'error':error, 'id':msg_id})) return diff --git a/lib/network.py b/lib/network.py @@ -78,6 +78,15 @@ class Network(threading.Thread): return self.interface.is_connected + def set_server(self, server, proxy): + subscriptions = self.interface.subscriptions + self.default_server = server + self.start_interface(server) + self.interface = self.interfaces[server] + self.resend_subscriptions(subscriptions) + self.trigger_callback('disconnecting') # for actively disconnecting + + def run(self): self.blockchain.start() @@ -122,10 +131,10 @@ class Network(threading.Thread): with self.lock: return self.running - def resend_subscriptions(self): - for channel, messages in self.subscriptions.items(): + def resend_subscriptions(self, subscriptions): + for channel, messages in subscriptions.items(): if messages: - self.send(messages, channel) + self.interface.send(messages, channel)