From dca21f6a050b3a59fab1fe9e0b1e9186879b72de Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 12 Dec 2019 17:17:45 +0100 Subject: [PATCH] fix: prioritize closer peers License: MIT Signed-off-by: Henrique Dias --- dht.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dht.go b/dht.go index c52bcb476..603472b94 100644 --- a/dht.go +++ b/dht.go @@ -28,9 +28,9 @@ import ( ds "github.com/ipfs/go-datastore" logging "github.com/ipfs/go-log" "github.com/jbenet/goprocess" - "github.com/jbenet/goprocess/context" + goprocessctx "github.com/jbenet/goprocess/context" kb "github.com/libp2p/go-libp2p-kbucket" - "github.com/libp2p/go-libp2p-record" + record "github.com/libp2p/go-libp2p-record" recpb "github.com/libp2p/go-libp2p-record/pb" "github.com/multiformats/go-base32" ) @@ -144,11 +144,13 @@ func NewDHTClient(ctx context.Context, h host.Host, dstore ds.Batching) *IpfsDHT } func makeDHT(ctx context.Context, h host.Host, dstore ds.Batching, protocols []protocol.ID, bucketSize int) *IpfsDHT { - rt := kb.NewRoutingTable(bucketSize, kb.ConvertPeerID(h.ID()), time.Minute, h.Peerstore()) + self := kb.ConvertPeerID(h.ID()) + rt := kb.NewRoutingTable(bucketSize, self, time.Minute, h.Peerstore()) cmgr := h.ConnManager() rt.PeerAdded = func(p peer.ID) { - cmgr.TagPeer(p, "kbucket", 5) + dist := kb.CommonPrefixLen(self, kb.ConvertPeerID(p)) + cmgr.TagPeer(p, "kbucket", 5+dist) } rt.PeerRemoved = func(p peer.ID) {