@cryptotaxi247 / kubo / commits / 9d15e63e0

core: address factory composition for constructPeerHost

- Adds AddrsFactory to ConstructPeerHostOpts - Composes the AddrsFactory option with the relay filter License: MIT Signed-off-by: vyzo <vyzo@hackzen.org>

vyzo committed Jul 30, 2017 at 11:41 UTC 9d15e63e00dcd84baa7d89560508a26ac73bbbbe
1 file changed +17 -1
core/core.go
+17 -1
@@ -820,6 +820,7 @@ func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr
820 hostOpts = append(hostOpts, opts.AddrsFactory)
821 }
822
823 + addrsFactory := opts.AddrsFactory
824 if !opts.DisableRelay {
825 filterRelayAddr := func(addrs []ma.Multiaddr) []ma.Multiaddr {
826 var raddrs []ma.Multiaddr
@@ -832,7 +833,16 @@ func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr
833 }
834 return raddrs
835 }
835 - hostOpts = append(hostOpts, p2pbhost.AddrsFactory(filterRelayAddr))
836 +
837 + if addrsFactory != nil {
838 + addrsFactory = composeAddrsFactory(addrsFactory, filterRelayAddr)
839 + } else {
840 + addrsFactory = filterRelayAddr
841 + }
842 + }
843 +
844 + if addrsFactory != nil {
845 + hostOpts = append(hostOpts, addrsFactory)
846 }
847
848 host := p2pbhost.New(network, hostOpts...)
@@ -852,6 +862,12 @@ func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr
862 return host, nil
863 }
864
865 +func composeAddrsFactory(f, g p2pbhost.AddrsFactory) p2pbhost.AddrsFactory {
866 + return func(addrs []ma.Multiaddr) []ma.Multiaddr {
867 + return f(g(addrs))
868 + }
869 +}
870 +
871 // startListening on the network addresses
872 func startListening(ctx context.Context, host p2phost.Host, cfg *config.Config) error {
873 listenAddrs, err := listenAddresses(cfg)