diff --git a/ethereum.go b/ethereum.go index c2d209597..a389c663d 100644 --- a/ethereum.go +++ b/ethereum.go @@ -490,6 +490,9 @@ func (s *Ethereum) peerHandler(listener net.Listener) { } func (s *Ethereum) Stop() { + // Stop eventMux first, it will close all subscriptions. + s.eventMux.Stop() + // Close the database defer s.db.Close() @@ -514,7 +517,6 @@ func (s *Ethereum) Stop() { } s.txPool.Stop() s.stateManager.Stop() - s.eventMux.Stop() s.blockPool.Stop() ethlogger.Infoln("Server stopped") diff --git a/javascript/javascript_runtime.go b/javascript/javascript_runtime.go index 704635d97..6c5a87338 100644 --- a/javascript/javascript_runtime.go +++ b/javascript/javascript_runtime.go @@ -25,8 +25,7 @@ type JSRE struct { Vm *otto.Otto pipe *ethpipe.JSPipe - events event.Subscription - quitChan chan bool + events event.Subscription objectCb map[string][]otto.Value } @@ -51,7 +50,6 @@ func NewJSRE(ethereum *eth.Ethereum) *JSRE { otto.New(), ethpipe.NewJSPipe(ethereum), nil, - make(chan bool), make(map[string][]otto.Value), } @@ -104,10 +102,6 @@ func (self *JSRE) Require(file string) error { func (self *JSRE) Stop() { self.events.Unsubscribe() - // Kill the main loop - self.quitChan <- true - - close(self.quitChan) jsrelogger.Infoln("stopped") }