Implement node priority
- prioritise connecting to nodes that were online more recently - hidden service nodes have a higher priority if using tor
This commit is contained in:
parent
c11dd67e50
commit
33991f4598
|
@ -35,13 +35,21 @@ class outgoingSynSender(threading.Thread, StoppableThread):
|
|||
shared.knownNodes[self.streamNumber][peer] = time.time()
|
||||
shared.knownNodesLock.release()
|
||||
else:
|
||||
while True:
|
||||
while not shared.shutdown:
|
||||
shared.knownNodesLock.acquire()
|
||||
peer, = random.sample(shared.knownNodes[self.streamNumber], 1)
|
||||
priority = (183600 - (time.time() - shared.knownNodes[self.streamNumber][peer])) / 183600 # 2 days and 3 hours
|
||||
shared.knownNodesLock.release()
|
||||
if shared.config.get('bitmessagesettings', 'socksproxytype') != 'none' or peer.host.find(".onion") == -1:
|
||||
if shared.config.get('bitmessagesettings', 'socksproxytype') != 'none':
|
||||
if peer.host.find(".onion") == -1:
|
||||
priority /= 10 # hidden services have 10x priority over plain net
|
||||
elif peer.host.find(".onion") != -1: # onion address and so proxy
|
||||
continue
|
||||
if priority <= 0.001: # everyone has at least this much priority
|
||||
priority = 0.001
|
||||
if (random.random() <= priority):
|
||||
break
|
||||
time.sleep(1)
|
||||
time.sleep(0.01) # prevent CPU hogging if something is broken
|
||||
return peer
|
||||
|
||||
def stopThread(self):
|
||||
|
|
|
@ -757,6 +757,8 @@ class receiveDataThread(threading.Thread):
|
|||
if not isHostInPrivateIPRange(self.peer.host):
|
||||
with shared.knownNodesLock:
|
||||
shared.knownNodes[self.streamNumber][shared.Peer(self.peer.host, self.remoteNodeIncomingPort)] = int(time.time())
|
||||
if not self.initiatedConnection:
|
||||
shared.knownNodes[self.streamNumber][shared.Peer(self.peer.host, self.remoteNodeIncomingPort)] -= 162000 # penalise inbound, 2 days minus 3 hours
|
||||
shared.needToWriteKnownNodesToDisk = True
|
||||
|
||||
self.sendverack()
|
||||
|
|
Loading…
Reference in New Issue
Block a user