5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-11-22 21:10:29 +00:00

Disconnect peers when stopping, stop modules before core

This commit is contained in:
Neil Alexander 2019-09-18 15:22:17 +01:00
parent 846df4789a
commit 00a972b74e
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944
2 changed files with 20 additions and 13 deletions

View File

@ -292,10 +292,10 @@ exit:
} }
func (n *node) shutdown() { func (n *node) shutdown() {
n.core.Stop()
n.admin.Stop() n.admin.Stop()
n.multicast.Stop() n.multicast.Stop()
n.tuntap.Stop() n.tuntap.Stop()
n.core.Stop()
os.Exit(0) os.Exit(0)
} }

View File

@ -31,6 +31,7 @@ type Core struct {
router router router router
link link link link
log *log.Logger log *log.Logger
addPeerTimer *time.Timer
} }
func (c *Core) _init() error { func (c *Core) _init() error {
@ -110,7 +111,7 @@ func (c *Core) _addPeerLoop() {
} }
// Sit for a while // Sit for a while
time.AfterFunc(time.Minute, func() { c.addPeerTimer = time.AfterFunc(time.Minute, func() {
c.Act(c, c._addPeerLoop) c.Act(c, c._addPeerLoop)
}) })
} }
@ -177,7 +178,9 @@ func (c *Core) _start(nc *config.NodeConfig, log *log.Logger) (*config.NodeState
return nil, err return nil, err
} }
c.addPeerTimer = time.AfterFunc(time.Second, func() {
c.Act(c, c._addPeerLoop) c.Act(c, c._addPeerLoop)
})
c.log.Infoln("Startup complete") c.log.Infoln("Startup complete")
return &c.config, nil return &c.config, nil
@ -191,4 +194,8 @@ func (c *Core) Stop() {
// This function is unsafe and should only be ran by the core actor. // This function is unsafe and should only be ran by the core actor.
func (c *Core) _stop() { func (c *Core) _stop() {
c.log.Infoln("Stopping...") c.log.Infoln("Stopping...")
c.addPeerTimer.Stop()
for _, peer := range c.GetPeers() {
c.DisconnectPeer(peer.Port)
}
} }