OSDN Git Service

Add LAN discover cli config option (#1712)
authoryahtoo <yahtoo.ma@gmail.com>
Thu, 18 Apr 2019 09:33:30 +0000 (17:33 +0800)
committerPaladz <yzhu101@uottawa.ca>
Thu, 18 Apr 2019 09:33:30 +0000 (17:33 +0800)
* Add LAN discover cli config option

* Fix test file error

* Fix review bug

cmd/bytomd/commands/run_node.go
config/config.go
p2p/switch.go
p2p/test_util.go

index c61ed34..67a5cfa 100644 (file)
@@ -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")
index f1de23c..eddb178 100644 (file)
@@ -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,
index ecddbeb..f2148d8 100644 (file)
@@ -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
        }
 
index 1d95a8b..d263fa7 100644 (file)
@@ -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)