Commit 82856be0 authored by yahtoo's avatar yahtoo Committed by Paladz

Add LAN discover cli config option (#1712)

* Add LAN discover cli config option

* Fix test file error

* Fix review bug
parent 8159d45f
......@@ -41,6 +41,7 @@ func init() {
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")
......
......@@ -149,6 +149,7 @@ type P2PConfig struct {
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"`
......@@ -164,6 +165,7 @@ func DefaultP2PConfig() *P2PConfig {
ListenAddress: "tcp://0.0.0.0:46656",
NodeKeyFile: "nodekey",
SkipUPNP: false,
LANDiscover: true,
MaxNumPeers: 50,
HandshakeTimeout: 30,
DialTimeout: 3,
......
......@@ -105,8 +105,9 @@ func NewSwitch(config *cfg.Config) (*Switch, error) {
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)
......@@ -157,9 +158,10 @@ func (sw *Switch) OnStart() error {
// 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()
}
......@@ -395,7 +397,7 @@ func (sw *Switch) connectLANPeers(lanPeer mdns.LANPeerEvent) {
}
func (sw *Switch) connectLANPeersRoutine() {
if sw.lanDiscv == nil {
if !sw.Config.P2P.LANDiscover {
return
}
......
......@@ -91,6 +91,7 @@ func (m *mockDiscv) ReadRandomNodes(buf []*dht.Node) (n int) {
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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment