• Lars Gierth's avatar
    Refactor and relax filtering of known undialable addresses · 0b06a5fe
    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
swarm_dial.go 12.6 KB