From 1cf0e0eb213e917f31156c55f39c0a28e2785261 Mon Sep 17 00:00:00 2001 From: HelloZeroNet Date: Wed, 16 Mar 2016 00:40:01 +0100 Subject: [PATCH] Always prefer publishing to connected peers --- src/Site/Site.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Site/Site.py b/src/Site/Site.py index bb0bdfb6..941b09df 100644 --- a/src/Site/Site.py +++ b/src/Site/Site.py @@ -367,20 +367,23 @@ class Site(object): else: limit = 5 - connected_peers = self.getConnectedPeers() - if len(connected_peers) > limit * 2: # Publish to already connected peers if possible - peers = connected_peers - else: - peers = self.peers.values() + peers = self.getConnectedPeers() + num_connected_peers = len(peers) + + random.shuffle(peers) + + # Add more, non-connected peers + peers_more = self.peers.values() + random.shuffle(peers_more) + peers += peers_more[0:limit*2] self.log.info("Publishing %s to %s/%s peers (connected: %s)..." % ( - inner_path, limit, len(self.peers), len(connected_peers) + inner_path, limit, len(self.peers), num_connected_peers )) if not peers: return 0 # No peers found - random.shuffle(peers) event_done = gevent.event.AsyncResult() for i in range(min(len(self.peers), limit, threads)): publisher = gevent.spawn(self.publisher, inner_path, peers, published, limit, event_done)