diff --git a/lbry/dht/protocol/protocol.py b/lbry/dht/protocol/protocol.py index c34c129c3..813fc5813 100644 --- a/lbry/dht/protocol/protocol.py +++ b/lbry/dht/protocol/protocol.py @@ -229,7 +229,7 @@ class PingQueue: async def ping_task(): try: if self._protocol.peer_manager.peer_is_good(peer): - if peer not in self._protocol.routing_table.get_peers(): + if not self._protocol.routing_table.get_peer(peer.node_id): self._protocol.add_peer(peer) return await self._protocol.get_rpc_peer(peer).ping() @@ -419,9 +419,8 @@ class KademliaProtocol(DatagramProtocol): # This is an RPC method request self.received_request_metric.labels(method=request_datagram.method).inc() self.peer_manager.report_last_requested(address[0], address[1]) - try: - peer = self.routing_table.get_peer(request_datagram.node_id) - except IndexError: + peer = self.routing_table.get_peer(request_datagram.node_id) + if not peer: try: peer = make_kademlia_peer(request_datagram.node_id, address[0], address[1]) except ValueError as err: diff --git a/lbry/dht/protocol/routing_table.py b/lbry/dht/protocol/routing_table.py index 676b488d8..4db26cc22 100644 --- a/lbry/dht/protocol/routing_table.py +++ b/lbry/dht/protocol/routing_table.py @@ -82,7 +82,6 @@ class KBucket: for peer in self.peers: if peer.node_id == node_id: return peer - raise IndexError(node_id) def get_peers(self, count=-1, exclude_contact=None, sort_distance_to=None) -> typing.List['KademliaPeer']: """ Returns a list containing up to the first count number of contacts @@ -225,11 +224,7 @@ class TreeRoutingTable: return [] def get_peer(self, contact_id: bytes) -> 'KademliaPeer': - """ - @raise IndexError: No contact with the specified contact ID is known - by this node - """ - return self.buckets[self.kbucket_index(contact_id)].get_peer(contact_id) + return self.buckets[self._kbucket_index(contact_id)].get_peer(contact_id) def get_refresh_list(self, start_index: int = 0, force: bool = False) -> typing.List[bytes]: bucket_index = start_index