mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 02:42:27 +00:00
node: fix goroutine leak by closing accounts manager on Node.Stop
This commit is contained in:
parent
15b9b39e6c
commit
3b73e3dca3
1 changed files with 15 additions and 0 deletions
15
node/node.go
15
node/node.go
|
|
@ -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 != "" {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue