diff --git a/eth/backend.go b/eth/backend.go index 6a6242b6b2..6f7cbb4696 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -365,7 +365,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { // ensure 5 seconds has passed between blocks before we start peering so we are sure sync has finished if time.Now().Unix()-eth.timeLastBlock >= 5 { log.Info("Networking and peering start...") - eth.handler.peers.open() + eth.handler.peers.SetOpen() eth.p2pServer.Start() eth.Downloader().DoneEvent() eth.handler.synced.Store(true) @@ -522,7 +522,7 @@ func (s *Ethereum) Start() error { // SYSCOIN if s.blockchain.GetChainConfig().SyscoinBlock != nil { log.Info("Skip networking and peering...") - s.handler.peers.close() + s.handler.peers.SetClosed() s.p2pServer.Stop() } diff --git a/eth/peerset.go b/eth/peerset.go index 15b2ddf2af..fc2ea6ff72 100644 --- a/eth/peerset.go +++ b/eth/peerset.go @@ -239,9 +239,19 @@ func (ps *peerSet) close() { } // SYSCOIN -func (ps *peerSet) open() { +func (ps *peerSet) SetOpen() { ps.lock.Lock() defer ps.lock.Unlock() ps.closed = false } +func (ps *peerSet) SetClosed() { + ps.lock.Lock() + defer ps.lock.Unlock() + + for _, p := range ps.peers { + p.Disconnect(p2p.DiscQuitting) + } + + ps.closed = true +}