chore: support ping with multiple multiaddresses and close stream #3154
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
We've noticed before in status-go that sometimes multiaddresses that use dns names fail due to the ISP dns or the nameservers not being available. A change was done before in status-go to instead of having a single multiaddress per storenode, to have multiple multiaddresses: one with the dns and another one with the IP address.
As such, when go-waku does a ping, it does it by creating a
PeerInfo
(a go-libp2p structure) which contains these multiaddresses and then go-libp2p would use its own heurisitc to determine which multiaddress to use when pinging.Looking at nim-libp2p,
switch.dial
supports multiple addresses too, so this PR modifies part of the nwaku code to make it possible to ping a peer with multiple multiaddressesIt also fixes a stream that was left open.