mirror of
https://github.com/cwinfo/yggdrasil-go.git
synced 2024-11-25 23:01:38 +00:00
Disconnect peers when stopping, stop modules before core
This commit is contained in:
parent
846df4789a
commit
00a972b74e
@ -292,10 +292,10 @@ exit:
|
||||
}
|
||||
|
||||
func (n *node) shutdown() {
|
||||
n.core.Stop()
|
||||
n.admin.Stop()
|
||||
n.multicast.Stop()
|
||||
n.tuntap.Stop()
|
||||
n.core.Stop()
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
|
@ -21,16 +21,17 @@ type Core struct {
|
||||
// We're going to keep our own copy of the provided config - that way we can
|
||||
// guarantee that it will be covered by the mutex
|
||||
phony.Inbox
|
||||
config config.NodeState // Config
|
||||
boxPub crypto.BoxPubKey
|
||||
boxPriv crypto.BoxPrivKey
|
||||
sigPub crypto.SigPubKey
|
||||
sigPriv crypto.SigPrivKey
|
||||
switchTable switchTable
|
||||
peers peers
|
||||
router router
|
||||
link link
|
||||
log *log.Logger
|
||||
config config.NodeState // Config
|
||||
boxPub crypto.BoxPubKey
|
||||
boxPriv crypto.BoxPrivKey
|
||||
sigPub crypto.SigPubKey
|
||||
sigPriv crypto.SigPrivKey
|
||||
switchTable switchTable
|
||||
peers peers
|
||||
router router
|
||||
link link
|
||||
log *log.Logger
|
||||
addPeerTimer *time.Timer
|
||||
}
|
||||
|
||||
func (c *Core) _init() error {
|
||||
@ -110,7 +111,7 @@ func (c *Core) _addPeerLoop() {
|
||||
}
|
||||
|
||||
// Sit for a while
|
||||
time.AfterFunc(time.Minute, func() {
|
||||
c.addPeerTimer = time.AfterFunc(time.Minute, func() {
|
||||
c.Act(c, c._addPeerLoop)
|
||||
})
|
||||
}
|
||||
@ -177,7 +178,9 @@ func (c *Core) _start(nc *config.NodeConfig, log *log.Logger) (*config.NodeState
|
||||
return nil, err
|
||||
}
|
||||
|
||||
c.Act(c, c._addPeerLoop)
|
||||
c.addPeerTimer = time.AfterFunc(time.Second, func() {
|
||||
c.Act(c, c._addPeerLoop)
|
||||
})
|
||||
|
||||
c.log.Infoln("Startup complete")
|
||||
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.
|
||||
func (c *Core) _stop() {
|
||||
c.log.Infoln("Stopping...")
|
||||
c.addPeerTimer.Stop()
|
||||
for _, peer := range c.GetPeers() {
|
||||
c.DisconnectPeer(peer.Port)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user