Also cleanup connections for smaller sites
This commit is contained in:
parent
1557d3c390
commit
d76c1ca98e
1 changed files with 16 additions and 18 deletions
|
@ -777,7 +777,7 @@ class Site(object):
|
||||||
|
|
||||||
# Keep connections to get the updates
|
# Keep connections to get the updates
|
||||||
def needConnections(self, num=5):
|
def needConnections(self, num=5):
|
||||||
need = min(len(self.peers), num) # Need 5 peer, but max total peers
|
need = min(len(self.peers), num, config.connected_limit) # Need 5 peer, but max total peers
|
||||||
|
|
||||||
connected = self.getConnectedPeers()
|
connected = self.getConnectedPeers()
|
||||||
|
|
||||||
|
@ -823,25 +823,23 @@ class Site(object):
|
||||||
# Cleanup probably dead peers and close connection if too much
|
# Cleanup probably dead peers and close connection if too much
|
||||||
def cleanupPeers(self):
|
def cleanupPeers(self):
|
||||||
peers = self.peers.values()
|
peers = self.peers.values()
|
||||||
if len(peers) < 20:
|
if len(peers) > 20:
|
||||||
return False
|
# Cleanup old peers
|
||||||
|
removed = 0
|
||||||
|
|
||||||
# Cleanup old peers
|
for peer in peers:
|
||||||
removed = 0
|
if peer.connection and peer.connection.connected:
|
||||||
|
continue
|
||||||
|
if peer.connection and not peer.connection.connected:
|
||||||
|
peer.connection = None # Dead connection
|
||||||
|
if time.time() - peer.time_found > 60 * 60 * 4: # Not found on tracker or via pex in last 4 hour
|
||||||
|
peer.remove()
|
||||||
|
removed += 1
|
||||||
|
if removed > len(peers) * 0.1: # Don't remove too much at once
|
||||||
|
break
|
||||||
|
|
||||||
for peer in peers:
|
if removed:
|
||||||
if peer.connection and peer.connection.connected:
|
self.log.debug("Cleanup peers result: Removed %s, left: %s" % (removed, len(self.peers)))
|
||||||
continue
|
|
||||||
if peer.connection and not peer.connection.connected:
|
|
||||||
peer.connection = None # Dead connection
|
|
||||||
if time.time() - peer.time_found > 60 * 60 * 4: # Not found on tracker or via pex in last 4 hour
|
|
||||||
peer.remove()
|
|
||||||
removed += 1
|
|
||||||
if removed > len(peers) * 0.1: # Don't remove too much at once
|
|
||||||
break
|
|
||||||
|
|
||||||
if removed:
|
|
||||||
self.log.debug("Cleanup peers result: Removed %s, left: %s" % (removed, len(self.peers)))
|
|
||||||
|
|
||||||
# Close peers over the limit
|
# Close peers over the limit
|
||||||
closed = 0
|
closed = 0
|
||||||
|
|
Loading…
Reference in a new issue