diff --git a/server.py b/server.py index f5325b629c7db67039cdedcbacdb631f132d038b..0a78f57c897ac77f7e1b2bf5825629aa7642d0dc 100644 --- a/server.py +++ b/server.py @@ -604,6 +604,7 @@ class ClientThread(Thread): utils.logprint("Peer detection: Network error: "+peer.to_human_str(), utils.LOG_WARN) # Choose the more recent peer infos + added_peers = False for peer in new_peers: new_peer = max(new_peers[peer], key=lambda p: p.sigtime) # select the more recent @@ -612,9 +613,22 @@ class ClientThread(Thread): utils.logprint("Peer detection: too old sig", utils.LOG_TRACE) continue self.peers[peer] = new_peer + added_peers = True utils.logprint("Peer: "+new_peer.to_human_str(), utils.LOG_TRACE) utils.logprint("Finished peers detection", utils.LOG_TRACE) + + # Remove old peers + if added_peers: + t = time.time() - self.conf["server"]["peer_sig_age_max"] + to_remove = [] + for peer in self.peers: + if self.peers[peer].sigtime < t: + to_remove.append(peer) + + for peer in to_remove: + utils.logprint("Remove old peer: "+self.peers[peer].to_human_str(), utils.LOG_TRACE) + self.peers.pop(peer) def spread_peer_info(self): utils.logprint("Start spreading peer info", utils.LOG_TRACE) @@ -832,6 +846,7 @@ def main(): peers = {} db_peers = plyvel.DB(DIR+"/db_peers", create_if_missing=True) utils.load_peers(conf, db_peers, peers) + utils.logprint("Loaded " + str(len(peers)) + " peers", utils.LOG_TRACE) # Load txs pool = []