Hi all,
I am still a complete noob in libp2p, so this is probably a very dumb question, but I can’t find any information on why this error happens anywhere. I wrote a go function to simplify dialing a remote node, like this:
func GetStreamToRemoteNode(dialer host.Host, remote_addr peerstore.ID) (*bufio.ReadWriter, error) {
addr, addrErr := multiaddr.NewMultiaddr(string(remote_addr))
if addrErr != nil {
return nil, addrErr
}
peer, infoErr := peerstore.AddrInfoFromP2pAddr(addr)
if infoErr != nil {
return nil, infoErr
}
dialer.Peerstore().AddAddrs(peer.ID, peer.Addrs, store.PermanentAddrTTL)
peers := dialer.Peerstore().PeersWithKeys() // I can see the peer I just added here.
fmt.Println(peers)
stream, dialErr := dialer.NewStream(context.Background(), remote_addr, CachengoProtocolID)
if dialErr != nil {
return nil, dialErr
}
rw := bufio.NewReadWriter(bufio.NewReader(stream), bufio.NewWriter(stream))
return rw, nil
}
However, I am getting a “no addresses” error message on the line that calls dialer.NewStream(). I am basing this on the chat example available on the go-libp2p repo examples folder. The example suggests that I need to call dialer.Peerstore().AddAddrs() before NewStream(), which I did. I can also see that the peer’s address is added to the peerstore when I debug the function. Can someone please explain what this error message means and what I am doing wrong? Any help will be greatly appreciated.