node: fix goroutine leak by closing accounts manager on Node.Stop

This commit is contained in:
Janos Guljas 2019-01-22 09:30:19 +01:00
parent 15b9b39e6c
commit 3b73e3dca3

View file

@ -147,6 +147,14 @@ func (n *Node) Start() error {
return err return err
} }
if n.accman == nil {
var err error
n.accman, n.ephemeralKeystore, err = makeAccountManager(n.config)
if err != nil {
return err
}
}
// Initialize the p2p server. This creates the node key and // Initialize the p2p server. This creates the node key and
// discovery databases. // discovery databases.
n.serverConfig = n.config.P2P n.serverConfig = n.config.P2P
@ -435,6 +443,13 @@ func (n *Node) Stop() error {
// unblock n.Wait // unblock n.Wait
close(n.stop) close(n.stop)
if n.accman != nil {
if err := n.accman.Close(); err != nil {
return err
}
n.accman = nil
}
// Remove the keystore if it was created ephemerally. // Remove the keystore if it was created ephemerally.
var keystoreErr error var keystoreErr error
if n.ephemeralKeystore != "" { if n.ephemeralKeystore != "" {