-
Lars Gierth authored
This commit moves filtering of dial candidates into its own little function. Things that are being filtered: addresses configured to be blocked, IPv6 link-local addresses, addresses without a dial-capable transport, and addresses that we know to be our own. It's is an optimization to avoid wasting time on dials that we know are going to fail. This also relaxes the filtering of addresses that we consider our own. Previously, any address would get filtered that's registered in peerstore for or own PeerID. For e.g. /ip4/1.2.3.4/tcp/4001 that's fine, but for ephemeral ports it can already cause problems. In addition, now that go-libp2p-circuit is being fixed to handle its multiaddrs slightly differently, /p2p-circuit addresses won't contain the PeerID anymore. That means they stand for themselves, and would get filtered too. (/p2p-circuit is the address we want to dial, but it's also on of "our own addresses"). In the future we'd want to use the mafmt package here, and also consider /quic, /ws, etc. addresses as our own.
0b06a5fe