From a265c2a7ca07d2b250f7b51434a52c9abdab4d70 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Thu, 8 Feb 2018 17:57:26 +0100 Subject: [PATCH] Pass peer discovery source to addPeer --- src/File/FileRequest.py | 20 ++++++++++---------- src/Peer/Peer.py | 2 ++ src/Worker/WorkerManager.py | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/File/FileRequest.py b/src/File/FileRequest.py index 00a5b151..fd001721 100644 --- a/src/File/FileRequest.py +++ b/src/File/FileRequest.py @@ -141,7 +141,7 @@ class FileRequest(object): site.onFileDone(inner_path) # Trigger filedone if inner_path.endswith("content.json"): # Download every changed file from peer - peer = site.addPeer(self.connection.ip, self.connection.port, return_peer=True) # Add or get peer + peer = site.addPeer(self.connection.ip, self.connection.port, return_peer=True, source="update") # Add or get peer # On complete publish to other peers diffs = params.get("diffs", {}) site.onComplete.once(lambda: site.publish(inner_path=inner_path, diffs=diffs, limit=3), "publish_%s" % inner_path) @@ -159,7 +159,7 @@ class FileRequest(object): self.connection.goodAction() elif valid is None: # Not changed - peer = site.addPeer(self.connection.ip, self.connection.port, return_peer=True) # Add or get peer + peer = site.addPeer(self.connection.ip, self.connection.port, return_peer=True, source="update old") # Add or get peer if peer: if not peer.connection: peer.connect(self.connection) # Assign current connection to peer @@ -240,7 +240,7 @@ class FileRequest(object): self.log.debug("File %s at position %s sent %s bytes" % (file_path, params["location"], bytes_sent)) # Add peer to site if not added before - connected_peer = site.addPeer(self.connection.ip, self.connection.port) + connected_peer = site.addPeer(self.connection.ip, self.connection.port, source="request") if connected_peer: # Just added connected_peer.connect(self.connection) # Assign current connection to peer @@ -272,7 +272,8 @@ class FileRequest(object): added = 0 # Add requester peer to site - connected_peer = site.addPeer(self.connection.ip, self.connection.port) + connected_peer = site.addPeer(self.connection.ip, self.connection.port, source="request") + if connected_peer: # It was not registered before added += 1 connected_peer.connect(self.connection) # Assign current connection to peer @@ -281,14 +282,14 @@ class FileRequest(object): for packed_address in params.get("peers", []): address = helper.unpackAddress(packed_address) got_peer_keys.append("%s:%s" % address) - if site.addPeer(*address): + if site.addPeer(*address, source="pex"): added += 1 # Add sent peers to site for packed_address in params.get("peers_onion", []): address = helper.unpackOnionAddress(packed_address) got_peer_keys.append("%s:%s" % address) - if site.addPeer(*address): + if site.addPeer(*address, source="pex"): added += 1 # Send back peers that is not in the sent list and connectable (not port 0) @@ -319,7 +320,7 @@ class FileRequest(object): modified_files = site.content_manager.listModified(params["since"]) # Add peer to site if not added before - connected_peer = site.addPeer(self.connection.ip, self.connection.port) + connected_peer = site.addPeer(self.connection.ip, self.connection.port, source="request") if connected_peer: # Just added connected_peer.connect(self.connection) # Assign current connection to peer @@ -331,9 +332,8 @@ class FileRequest(object): self.response({"error": "Unknown site"}) return False - s = time.time() # Add peer to site if not added before - peer = site.addPeer(self.connection.ip, self.connection.port, return_peer=True) + peer = site.addPeer(self.connection.ip, self.connection.port, return_peer=True, source="request") if not peer.connection: # Just added peer.connect(self.connection) # Assign current connection to peer @@ -412,7 +412,7 @@ class FileRequest(object): return False # Add or get peer - peer = site.addPeer(self.connection.ip, self.connection.port, return_peer=True, connection=self.connection) + peer = site.addPeer(self.connection.ip, self.connection.port, return_peer=True, connection=self.connection, source="request") if not peer.connection: peer.connect(self.connection) peer.hashfield.replaceFromString(params["hashfield_raw"]) diff --git a/src/Peer/Peer.py b/src/Peer/Peer.py index 5932d4d0..41d45586 100644 --- a/src/Peer/Peer.py +++ b/src/Peer/Peer.py @@ -261,11 +261,13 @@ class Peer(object): for peer in res.get("peers", []): address = helper.unpackAddress(peer) if site.addPeer(*address): + if site.addPeer(*address, source="pex"): added += 1 # Onion for peer in res.get("peers_onion", []): address = helper.unpackOnionAddress(peer) if site.addPeer(*address): + if site.addPeer(*address, source="pex"): added += 1 if added: diff --git a/src/Worker/WorkerManager.py b/src/Worker/WorkerManager.py index 681888e3..b411e873 100644 --- a/src/Worker/WorkerManager.py +++ b/src/Worker/WorkerManager.py @@ -246,7 +246,7 @@ class WorkerManager(object): else: continue for peer_ip in peer_ips: - peer = self.site.addPeer(peer_ip[0], peer_ip[1], return_peer=True) + peer = self.site.addPeer(peer_ip[0], peer_ip[1], return_peer=True, source="optional") if not peer: continue if self.taskAddPeer(task, peer):