Browse Source

RoutedHost: use Connect directly in NewStream

pull/208/head
vyzo 7 years ago
parent
commit
3b2f464171
  1. 13
      p2p/host/routed/routed.go

13
p2p/host/routed/routed.go

@ -128,13 +128,12 @@ func (rh *RoutedHost) RemoveStreamHandler(pid protocol.ID) {
}
func (rh *RoutedHost) NewStream(ctx context.Context, p peer.ID, pids ...protocol.ID) (inet.Stream, error) {
// check if we need to find some addresses for the peer through the routing system
if len(rh.Network().ConnsToPeer(p)) == 0 && len(rh.Peerstore().Addrs(p)) == 0 {
addrs, err := rh.findPeerAddrs(ctx, p)
if err != nil {
return nil, err
}
rh.Peerstore().AddAddrs(p, addrs, pstore.TempAddrTTL)
// Ensure we have a connection, with peer addresses resolved by the routing system (#207)
// It is not sufficient to let the underlying host connect, it will most likely not have
// any addresses for the peer without any prior connections.
err := rh.Connect(ctx, pstore.PeerInfo{ID: p})
if err != nil {
return nil, err
}
return rh.host.NewStream(ctx, p, pids...)

Loading…
Cancel
Save