mirror of
https://github.com/fluencelabs/go-libp2p-kad-dht
synced 2025-05-25 12:11:20 +00:00
change peer validation func
This commit is contained in:
parent
7c27400a1e
commit
d7b6b1b091
32
dht.go
32
dht.go
@ -202,10 +202,6 @@ func NewDHTClient(ctx context.Context, h host.Host, dstore ds.Batching) *IpfsDHT
|
|||||||
}
|
}
|
||||||
|
|
||||||
func makeDHT(ctx context.Context, h host.Host, cfg config) (*IpfsDHT, error) {
|
func makeDHT(ctx context.Context, h host.Host, cfg config) (*IpfsDHT, error) {
|
||||||
rt, err := makeRoutingTable(h, cfg)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("failed to construct routing table,err=%s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
protocols := []protocol.ID{cfg.protocolPrefix + kad2}
|
protocols := []protocol.ID{cfg.protocolPrefix + kad2}
|
||||||
serverProtocols := []protocol.ID{cfg.protocolPrefix + kad2, cfg.protocolPrefix + kad1}
|
serverProtocols := []protocol.ID{cfg.protocolPrefix + kad2, cfg.protocolPrefix + kad1}
|
||||||
@ -228,7 +224,6 @@ func makeDHT(ctx context.Context, h host.Host, cfg config) (*IpfsDHT, error) {
|
|||||||
strmap: make(map[peer.ID]*messageSender),
|
strmap: make(map[peer.ID]*messageSender),
|
||||||
birth: time.Now(),
|
birth: time.Now(),
|
||||||
rng: rand.New(rand.NewSource(rand.Int63())),
|
rng: rand.New(rand.NewSource(rand.Int63())),
|
||||||
routingTable: rt,
|
|
||||||
protocols: protocols,
|
protocols: protocols,
|
||||||
serverProtocols: serverProtocols,
|
serverProtocols: serverProtocols,
|
||||||
bucketSize: cfg.bucketSize,
|
bucketSize: cfg.bucketSize,
|
||||||
@ -238,6 +233,13 @@ func makeDHT(ctx context.Context, h host.Host, cfg config) (*IpfsDHT, error) {
|
|||||||
triggerSelfLookup: make(chan chan<- error),
|
triggerSelfLookup: make(chan chan<- error),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// construct routing table
|
||||||
|
rt, err := makeRoutingTable(dht, cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to construct routing table,err=%s", err)
|
||||||
|
}
|
||||||
|
dht.routingTable = rt
|
||||||
|
|
||||||
// create a DHT proc with the given context
|
// create a DHT proc with the given context
|
||||||
dht.proc = goprocessctx.WithContext(ctx)
|
dht.proc = goprocessctx.WithContext(ctx)
|
||||||
|
|
||||||
@ -251,15 +253,23 @@ func makeDHT(ctx context.Context, h host.Host, cfg config) (*IpfsDHT, error) {
|
|||||||
return dht, nil
|
return dht, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeRoutingTable(h host.Host, cfg config) (*kb.RoutingTable, error) {
|
func makeRoutingTable(dht *IpfsDHT, cfg config) (*kb.RoutingTable, error) {
|
||||||
self := kb.ConvertPeerID(h.ID())
|
self := kb.ConvertPeerID(dht.host.ID())
|
||||||
// construct the routing table with a peer validation function
|
// construct the routing table with a peer validation function
|
||||||
pvF := func(c context.Context, p peer.ID) bool {
|
pvF := func(c context.Context, p peer.ID) bool {
|
||||||
if err := h.Connect(c, peer.AddrInfo{ID: p}); err != nil {
|
// connect should work
|
||||||
|
if err := dht.host.Connect(c, peer.AddrInfo{ID: p}); err != nil {
|
||||||
rtPvLogger.Infof("failed to connect to peer %s for validation, err=%s", p, err)
|
rtPvLogger.Infof("failed to connect to peer %s for validation, err=%s", p, err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true
|
|
||||||
|
// peer should support the DHT protocol
|
||||||
|
b, err := dht.validRTPeer(p)
|
||||||
|
if err != nil {
|
||||||
|
rtPvLogger.Errorf("failed to check if peer %s supports DHT protocol, err=%s", p, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
rtOpts := []kb.Option{kb.PeerValidationFnc(pvF)}
|
rtOpts := []kb.Option{kb.PeerValidationFnc(pvF)}
|
||||||
@ -267,9 +277,9 @@ func makeRoutingTable(h host.Host, cfg config) (*kb.RoutingTable, error) {
|
|||||||
rtOpts = append(rtOpts, kb.TableCleanupInterval(cfg.routingTable.checkInterval))
|
rtOpts = append(rtOpts, kb.TableCleanupInterval(cfg.routingTable.checkInterval))
|
||||||
}
|
}
|
||||||
|
|
||||||
rt, err := kb.NewRoutingTable(cfg.bucketSize, self, time.Minute, h.Peerstore(),
|
rt, err := kb.NewRoutingTable(cfg.bucketSize, self, time.Minute, dht.host.Peerstore(),
|
||||||
rtOpts...)
|
rtOpts...)
|
||||||
cmgr := h.ConnManager()
|
cmgr := dht.host.ConnManager()
|
||||||
|
|
||||||
rt.PeerAdded = func(p peer.ID) {
|
rt.PeerAdded = func(p peer.ID) {
|
||||||
commonPrefixLen := kb.CommonPrefixLen(self, kb.ConvertPeerID(p))
|
commonPrefixLen := kb.CommonPrefixLen(self, kb.ConvertPeerID(p))
|
||||||
|
2
go.mod
2
go.mod
@ -14,7 +14,7 @@ require (
|
|||||||
github.com/libp2p/go-eventbus v0.1.0
|
github.com/libp2p/go-eventbus v0.1.0
|
||||||
github.com/libp2p/go-libp2p v0.5.3-0.20200221174525-7ba322244e0a
|
github.com/libp2p/go-libp2p v0.5.3-0.20200221174525-7ba322244e0a
|
||||||
github.com/libp2p/go-libp2p-core v0.3.2-0.20200305051524-d143201d83c2
|
github.com/libp2p/go-libp2p-core v0.3.2-0.20200305051524-d143201d83c2
|
||||||
github.com/libp2p/go-libp2p-kbucket v0.3.1
|
github.com/libp2p/go-libp2p-kbucket v0.3.2-0.20200319122627-7fa6dacb57ec
|
||||||
github.com/libp2p/go-libp2p-peerstore v0.1.4
|
github.com/libp2p/go-libp2p-peerstore v0.1.4
|
||||||
github.com/libp2p/go-libp2p-record v0.1.2
|
github.com/libp2p/go-libp2p-record v0.1.2
|
||||||
github.com/libp2p/go-libp2p-swarm v0.2.2
|
github.com/libp2p/go-libp2p-swarm v0.2.2
|
||||||
|
2
go.sum
2
go.sum
@ -197,6 +197,8 @@ github.com/libp2p/go-libp2p-kbucket v0.2.3 h1:XtNfN4WUy0cfeJoJgWCf1lor4Pp3kBkFJ9
|
|||||||
github.com/libp2p/go-libp2p-kbucket v0.2.3/go.mod h1:opWrBZSWnBYPc315q497huxY3sz1t488X6OiXUEYWKA=
|
github.com/libp2p/go-libp2p-kbucket v0.2.3/go.mod h1:opWrBZSWnBYPc315q497huxY3sz1t488X6OiXUEYWKA=
|
||||||
github.com/libp2p/go-libp2p-kbucket v0.3.1 h1:aHSdqYBAyExg2xir/VN7B2myIN6yxUuDG0FeyrZpBQE=
|
github.com/libp2p/go-libp2p-kbucket v0.3.1 h1:aHSdqYBAyExg2xir/VN7B2myIN6yxUuDG0FeyrZpBQE=
|
||||||
github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio=
|
github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio=
|
||||||
|
github.com/libp2p/go-libp2p-kbucket v0.3.2-0.20200319122627-7fa6dacb57ec h1:TzGGI4zuTxJxobJyAxwfjm05aFJW6kanlni5snT7k6Q=
|
||||||
|
github.com/libp2p/go-libp2p-kbucket v0.3.2-0.20200319122627-7fa6dacb57ec/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio=
|
||||||
github.com/libp2p/go-libp2p-loggables v0.1.0 h1:h3w8QFfCt2UJl/0/NW4K829HX/0S4KD31PQ7m8UXXO8=
|
github.com/libp2p/go-libp2p-loggables v0.1.0 h1:h3w8QFfCt2UJl/0/NW4K829HX/0S4KD31PQ7m8UXXO8=
|
||||||
github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90=
|
github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90=
|
||||||
github.com/libp2p/go-libp2p-mplex v0.2.0/go.mod h1:Ejl9IyjvXJ0T9iqUTE1jpYATQ9NM3g+OtR+EMMODbKo=
|
github.com/libp2p/go-libp2p-mplex v0.2.0/go.mod h1:Ejl9IyjvXJ0T9iqUTE1jpYATQ9NM3g+OtR+EMMODbKo=
|
||||||
|
Loading…
x
Reference in New Issue
Block a user