提交 9d15e63e 作者: vyzo

core: address factory composition for constructPeerHost

- Adds AddrsFactory to ConstructPeerHostOpts
- Composes the AddrsFactory option with the relay filter

License: MIT
Signed-off-by: 's avatarvyzo <vyzo@hackzen.org>
上级 3e7dce29
......@@ -820,6 +820,7 @@ func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr
hostOpts = append(hostOpts, opts.AddrsFactory)
}
addrsFactory := opts.AddrsFactory
if !opts.DisableRelay {
filterRelayAddr := func(addrs []ma.Multiaddr) []ma.Multiaddr {
var raddrs []ma.Multiaddr
......@@ -832,7 +833,16 @@ func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr
}
return raddrs
}
hostOpts = append(hostOpts, p2pbhost.AddrsFactory(filterRelayAddr))
if addrsFactory != nil {
addrsFactory = composeAddrsFactory(addrsFactory, filterRelayAddr)
} else {
addrsFactory = filterRelayAddr
}
}
if addrsFactory != nil {
hostOpts = append(hostOpts, addrsFactory)
}
host := p2pbhost.New(network, hostOpts...)
......@@ -852,6 +862,12 @@ func constructPeerHost(ctx context.Context, id peer.ID, ps pstore.Peerstore, bwr
return host, nil
}
func composeAddrsFactory(f, g p2pbhost.AddrsFactory) p2pbhost.AddrsFactory {
return func(addrs []ma.Multiaddr) []ma.Multiaddr {
return f(g(addrs))
}
}
// startListening on the network addresses
func startListening(ctx context.Context, host p2phost.Host, cfg *config.Config) error {
listenAddrs, err := listenAddresses(cfg)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论