runNodeCmd.Flags().String("p2p.seeds", config.P2P.Seeds, "Comma delimited host:port seed nodes")
runNodeCmd.Flags().String("p2p.node_key", config.P2P.PrivateKey, "Node key for p2p communication")
runNodeCmd.Flags().Bool("p2p.skip_upnp", config.P2P.SkipUPNP, "Skip UPNP configuration")
+ runNodeCmd.Flags().Bool("p2p.lan_discoverable", config.P2P.LANDiscover, "Whether the node can be discovered by nodes in the LAN")
runNodeCmd.Flags().Int("p2p.max_num_peers", config.P2P.MaxNumPeers, "Set max num peers")
runNodeCmd.Flags().Int("p2p.handshake_timeout", config.P2P.HandshakeTimeout, "Set handshake timeout")
runNodeCmd.Flags().Int("p2p.dial_timeout", config.P2P.DialTimeout, "Set dial timeout")
PrivateKey string `mapstructure:"node_key"`
NodeKeyFile string `mapstructure:"node_key_file"`
SkipUPNP bool `mapstructure:"skip_upnp"`
+ LANDiscover bool `mapstructure:"lan_discoverable"`
MaxNumPeers int `mapstructure:"max_num_peers"`
HandshakeTimeout int `mapstructure:"handshake_timeout"`
DialTimeout int `mapstructure:"dial_timeout"`
ListenAddress: "tcp://0.0.0.0:46656",
NodeKeyFile: "nodekey",
SkipUPNP: false,
+ LANDiscover: true,
MaxNumPeers: 50,
HandshakeTimeout: 30,
DialTimeout: 3,
if err != nil {
return nil, err
}
-
- lanDiscv = mdns.NewLANDiscover(mdns.NewProtocol(), int(l.ExternalAddress().Port))
+ if config.P2P.LANDiscover {
+ lanDiscv = mdns.NewLANDiscover(mdns.NewProtocol(), int(l.ExternalAddress().Port))
+ }
}
return newSwitch(config, discv, lanDiscv, blacklistDB, l, privKey, listenAddr)
// OnStop implements BaseService. It stops all listeners, peers, and reactors.
func (sw *Switch) OnStop() {
- if sw.lanDiscv != nil {
+ if sw.Config.P2P.LANDiscover {
sw.lanDiscv.Stop()
}
+
for _, listener := range sw.listeners {
listener.Stop()
}
}
func (sw *Switch) connectLANPeersRoutine() {
- if sw.lanDiscv == nil {
+ if !sw.Config.P2P.LANDiscover {
return
}
func MakeSwitch(cfg *cfg.Config, testdb dbm.DB, privKey crypto.PrivKeyEd25519, initSwitch func(*Switch) *Switch) *Switch {
// new switch, add reactors
l, listenAddr := GetListener(cfg.P2P)
+ cfg.P2P.LANDiscover = false
sw, err := newSwitch(cfg, new(mockDiscv), nil, testdb, l, privKey, listenAddr)
if err != nil {
log.Errorf("create switch error: %s", err)