From eeb0f8a3f44a0f70d8261871734b29123316f0e6 Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Sat, 17 Oct 2015 15:49:10 +0200 Subject: [PATCH] Fix wrong network behaviour when root nodes change identity --- src/cutecoin/core/app.py | 8 ++++---- src/cutecoin/core/net/network.py | 9 ++++++++- src/cutecoin/core/net/node.py | 12 +++++------- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/cutecoin/core/app.py b/src/cutecoin/core/app.py index 0ffcd2ec..f1ccc3de 100644 --- a/src/cutecoin/core/app.py +++ b/src/cutecoin/core/app.py @@ -72,15 +72,15 @@ class Application(QObject): } self.notifications = {'membership_expire_soon': - ( + [ self.tr("Warning : Your membership is expiring soon."), 0 - ), + ], 'warning_certifications': - ( + [ self.tr("Warning : Your could miss certifications soon."), 0 - ) + ] } @classmethod diff --git a/src/cutecoin/core/net/network.py b/src/cutecoin/core/net/network.py index 4d49b68e..b418c422 100644 --- a/src/cutecoin/core/net/network.py +++ b/src/cutecoin/core/net/network.py @@ -98,7 +98,6 @@ class Network(QObject): node = Node.from_json(currency, data) nodes.append(node) network = cls(currency, nodes) - # We block the signals until loading the nodes cache return network def jsonify(self): @@ -269,6 +268,7 @@ class Network(QObject): """ self._nodes.append(node) node.changed.connect(self.handle_change) + node.identity_changed.connect(self.handle_identity_change) node.neighbour_found.connect(self.handle_new_node) logging.debug("{:} connected".format(node.pubkey[:5])) @@ -330,6 +330,13 @@ class Network(QObject): except InvalidNodeCurrency as e: logging.debug(str(e)) + @pyqtSlot() + def handle_identity_change(self): + node = self.sender() + if node in self._root_nodes: + self.root_nodes_changed.emit() + self.nodes_changed.emit() + @pyqtSlot() def handle_change(self): node = self.sender() diff --git a/src/cutecoin/core/net/node.py b/src/cutecoin/core/net/node.py index c8b7da4c..ad9eab52 100644 --- a/src/cutecoin/core/net/node.py +++ b/src/cutecoin/core/net/node.py @@ -36,6 +36,7 @@ class Node(QObject): CORRUPTED = 4 changed = pyqtSignal() + identity_changed = pyqtSignal() neighbour_found = pyqtSignal(Peer, str) def __init__(self, currency, endpoints, uid, pubkey, block, @@ -345,18 +346,15 @@ class Node(QObject): node_currency = peering_data["currency"] self.state = Node.ONLINE - change = False if node_pubkey != self.pubkey: self._pubkey = node_pubkey - change = True + self.identity_changed.emit() if node_currency != self.currency: self.state = Node.CORRUPTED logging.debug("Change : new state corrupted") - change = True - - if change: self.changed.emit() + except ValueError as e: logging.debug("Error in peering reply : {0}".format(str(e))) self.changed.emit() @@ -415,13 +413,13 @@ class Node(QObject): uid = uid["uid"] if self._uid != uid: self._uid = uid - self.changed.emit() + self.identity_changed.emit() except ValueError as e: if '404' in str(e): logging.debug("UID not found") else: logging.debug("error in uid reply") - self.changed.emit() + self.identity_changed.emit() except ClientError: logging.debug("Client error : {0}".format(self.pubkey)) self.state = Node.OFFLINE -- GitLab