diff --git a/dht.go b/dht.go index c52bcb476..5e25c4468 100644 --- a/dht.go +++ b/dht.go @@ -28,15 +28,17 @@ 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" ) var logger = logging.Logger("dht") +const BaseConnMgrScore = 5 + // IpfsDHT is an implementation of Kademlia with S/Kademlia modifications. // It is used to implement the base Routing module. type IpfsDHT struct { @@ -144,11 +146,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) + commonPrefixLen := kb.CommonPrefixLen(self, kb.ConvertPeerID(p)) + cmgr.TagPeer(p, "kbucket", BaseConnMgrScore+commonPrefixLen) } rt.PeerRemoved = func(p peer.ID) {