From: yahtoo Date: Fri, 27 Sep 2019 07:26:36 +0000 (+0800) Subject: Specify lan discovery service name (#407) X-Git-Tag: v1.0.5~40 X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=commitdiff_plain;h=f9a134a9c18067c41d6ed804615745d17f3c6cc6 Specify lan discovery service name (#407) --- diff --git a/p2p/discover/mdns/mdns.go b/p2p/discover/mdns/mdns.go index 2c9ca7b0..5d38bc8d 100644 --- a/p2p/discover/mdns/mdns.go +++ b/p2p/discover/mdns/mdns.go @@ -2,46 +2,49 @@ package mdns import ( "context" + "fmt" "github.com/grandcat/zeroconf" ) const ( instanceName = "vapord" - serviceName = "lanDiscover" + serviceName = "vapor%sLanDiscover" domainName = "local" ) // Protocol decoration ZeroConf,which is a pure Golang library // that employs Multicast DNS-SD. type Protocol struct { - entries chan *zeroconf.ServiceEntry - server *zeroconf.Server - quite chan struct{} + entries chan *zeroconf.ServiceEntry + server *zeroconf.Server + serviceName string + quite chan struct{} } // NewProtocol create a specific Protocol. -func NewProtocol() *Protocol { +func NewProtocol(chainID string) *Protocol { return &Protocol{ - entries: make(chan *zeroconf.ServiceEntry), - quite: make(chan struct{}), + entries: make(chan *zeroconf.ServiceEntry), + serviceName: fmt.Sprintf(serviceName, chainID), + quite: make(chan struct{}), } } -func (m *Protocol) getLanPeerLoop(event chan LANPeerEvent) { +func (p *Protocol) getLanPeerLoop(event chan LANPeerEvent) { for { select { - case entry := <-m.entries: + case entry := <-p.entries: event <- LANPeerEvent{IP: entry.AddrIPv4, Port: entry.Port} - case <-m.quite: + case <-p.quite: return } } } -func (m *Protocol) registerService(port int) error { +func (p *Protocol) registerService(port int) error { var err error - m.server, err = zeroconf.Register(instanceName, serviceName, domainName, port, nil, nil) + p.server, err = zeroconf.Register(instanceName, p.serviceName, domainName, port, nil, nil) return err } @@ -52,15 +55,15 @@ func (m *Protocol) registerResolver(event chan LANPeerEvent) error { return err } - return resolver.Browse(context.Background(), serviceName, domainName, m.entries) + return resolver.Browse(context.Background(), m.serviceName, domainName, m.entries) } -func (m *Protocol) stopResolver() { - close(m.quite) +func (p *Protocol) stopResolver() { + close(p.quite) } -func (m *Protocol) stopService() { - if m.server != nil { - m.server.Shutdown() +func (p *Protocol) stopService() { + if p.server != nil { + p.server.Shutdown() } } diff --git a/p2p/switch.go b/p2p/switch.go index 075498f3..72a995d2 100644 --- a/p2p/switch.go +++ b/p2p/switch.go @@ -105,7 +105,7 @@ func NewSwitchMaybeDiscover(config *cfg.Config) (*Switch, error) { return nil, err } if config.P2P.LANDiscover { - lanDiscv = mdns.NewLANDiscover(mdns.NewProtocol(), int(l.ExternalAddress().Port)) + lanDiscv = mdns.NewLANDiscover(mdns.NewProtocol(config.ChainID), int(l.ExternalAddress().Port)) } } diff --git a/toolbar/precognitive/monitor/monitor.go b/toolbar/precognitive/monitor/monitor.go index 8a838ae6..d32e2a41 100644 --- a/toolbar/precognitive/monitor/monitor.go +++ b/toolbar/precognitive/monitor/monitor.go @@ -108,7 +108,7 @@ func (m *monitor) makeSwitch() error { } // no need for lanDiscv, but passing &mdns.LANDiscover{} will cause NilPointer - lanDiscv := mdns.NewLANDiscover(mdns.NewProtocol(), int(l.ExternalAddress().Port)) + lanDiscv := mdns.NewLANDiscover(mdns.NewProtocol(m.nodeCfg.ChainID), int(l.ExternalAddress().Port)) m.sw, err = p2p.NewSwitch(m.nodeCfg, discv, lanDiscv, l, m.privKey, listenAddr, m.cfg.NetworkID) if err != nil { return err