Fix kad_peerinfo according to peerinfo

This commit is contained in:
mhchia 2019-09-04 21:37:33 +08:00
parent 0e3d4508d6
commit 34b489af25
No known key found for this signature in database
GPG Key ID: 389EFBEA1362589A

View File

@ -1,11 +1,11 @@
import heapq import heapq
from operator import itemgetter from operator import itemgetter
import random import random
from typing import List
from multiaddr import Multiaddr from multiaddr import Multiaddr
from libp2p.peer.id import ID from libp2p.peer.id import ID
from libp2p.peer.peerdata import PeerData
from libp2p.peer.peerinfo import PeerInfo from libp2p.peer.peerinfo import PeerInfo
from .utils import digest from .utils import digest
@ -15,16 +15,16 @@ P_UDP = "udp"
class KadPeerInfo(PeerInfo): class KadPeerInfo(PeerInfo):
def __init__(self, peer_id, peer_data=None): def __init__(self, peer_id, addrs):
super(KadPeerInfo, self).__init__(peer_id, peer_data) super(KadPeerInfo, self).__init__(peer_id, addrs)
self.peer_id_bytes = peer_id.to_bytes() self.peer_id_bytes = peer_id.to_bytes()
self.xor_id = peer_id.xor_id self.xor_id = peer_id.xor_id
self.addrs = peer_data.get_addrs() if peer_data else None self.addrs = addrs
self.ip = self.addrs[0].value_for_protocol(P_IP) if peer_data else None self.ip = self.addrs[0].value_for_protocol(P_IP) if addrs else None
self.port = int(self.addrs[0].value_for_protocol(P_UDP)) if peer_data else None self.port = int(self.addrs[0].value_for_protocol(P_UDP)) if addrs else None
def same_home_as(self, node): def same_home_as(self, node):
return sorted(self.addrs) == sorted(node.addrs) return sorted(self.addrs) == sorted(node.addrs)
@ -142,14 +142,14 @@ def create_kad_peerinfo(node_id_bytes=None, sender_ip=None, sender_port=None):
node_id = ( node_id = (
ID(node_id_bytes) if node_id_bytes else ID(digest(random.getrandbits(255))) ID(node_id_bytes) if node_id_bytes else ID(digest(random.getrandbits(255)))
) )
peer_data = None addrs: List[Multiaddr]
if sender_ip and sender_port: if sender_ip and sender_port:
peer_data = PeerData() addrs = [
addr = [
Multiaddr( Multiaddr(
"/" + P_IP + "/" + str(sender_ip) + "/" + P_UDP + "/" + str(sender_port) "/" + P_IP + "/" + str(sender_ip) + "/" + P_UDP + "/" + str(sender_port)
) )
] ]
peer_data.add_addrs(addr) else:
addrs = []
return KadPeerInfo(node_id, peer_data) return KadPeerInfo(node_id, addrs)