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)