Skip to content
Snippets Groups Projects
Commit aee13270 authored by inso's avatar inso
Browse files

Fix bug where nodes would appear twice (#163)

parent 05600ace
No related branches found
No related tags found
No related merge requests found
...@@ -200,12 +200,12 @@ class Network(QObject): ...@@ -200,12 +200,12 @@ class Network(QObject):
node.refresh() node.refresh()
logging.debug("End of network discovery") logging.debug("End of network discovery")
@pyqtSlot(Peer) @pyqtSlot(Peer, str)
def handle_new_node(self, peer): def handle_new_node(self, peer, pubkey):
pubkeys = [n.pubkey for n in self.nodes] pubkeys = [n.pubkey for n in self.nodes]
if peer.pubkey not in pubkeys: if peer.pubkey not in pubkeys:
logging.debug("New node found : {0}".format(peer.pubkey[:5])) logging.debug("New node found : {0}".format(peer.pubkey[:5]))
node = Node.from_peer(self.network_manager, self.currency, peer) node = Node.from_peer(self.network_manager, self.currency, peer, pubkey)
self.add_node(node) self.add_node(node)
self.nodes_changed.emit() self.nodes_changed.emit()
......
...@@ -33,7 +33,7 @@ class Node(QObject): ...@@ -33,7 +33,7 @@ class Node(QObject):
CORRUPTED = 4 CORRUPTED = 4
changed = pyqtSignal() changed = pyqtSignal()
neighbour_found = pyqtSignal(Peer) neighbour_found = pyqtSignal(Peer, str)
def __init__(self, network_manager, currency, endpoints, uid, pubkey, block, def __init__(self, network_manager, currency, endpoints, uid, pubkey, block,
state, last_change, last_merkle, software, version): state, last_change, last_merkle, software, version):
...@@ -97,7 +97,7 @@ class Node(QObject): ...@@ -97,7 +97,7 @@ class Node(QObject):
return None return None
@classmethod @classmethod
def from_peer(cls, network_manager, currency, peer): def from_peer(cls, network_manager, currency, peer, pubkey):
""" """
Factory method to get a node from a peer document. Factory method to get a node from a peer document.
...@@ -109,7 +109,7 @@ class Node(QObject): ...@@ -109,7 +109,7 @@ class Node(QObject):
if peer.currency != currency: if peer.currency != currency:
raise InvalidNodeCurrency(peer.currency, currency) raise InvalidNodeCurrency(peer.currency, currency)
node = cls(network_manager, peer.currency, peer.endpoints, "", "", 0, node = cls(network_manager, peer.currency, peer.endpoints, "", pubkey, 0,
Node.ONLINE, time.time(), Node.ONLINE, time.time(),
{'root': "", 'leaves': []}, {'root': "", 'leaves': []},
"", "") "", "")
...@@ -450,7 +450,8 @@ class Node(QObject): ...@@ -450,7 +450,8 @@ class Node(QObject):
leaf_data = json.loads(strdata) leaf_data = json.loads(strdata)
doc = Peer.from_signed_raw("{0}{1}\n".format(leaf_data['leaf']['value']['raw'], doc = Peer.from_signed_raw("{0}{1}\n".format(leaf_data['leaf']['value']['raw'],
leaf_data['leaf']['value']['signature'])) leaf_data['leaf']['value']['signature']))
self.neighbour_found.emit(doc) pubkey = leaf_data['leaf']['value']['pubkey']
self.neighbour_found.emit(doc, pubkey)
else: else:
logging.debug("Error in leaf reply") logging.debug("Error in leaf reply")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment