mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
eth: fix crash in ethclient tests
This commit is contained in:
parent
84fac80fe4
commit
a9b863ea51
2 changed files with 14 additions and 12 deletions
|
|
@ -522,7 +522,7 @@ func (s *Ethereum) Protocols() []p2p.Protocol {
|
|||
// Start implements node.Service, starting all internal goroutines needed by the
|
||||
// Ethereum protocol implementation.
|
||||
func (s *Ethereum) Start(srvr *p2p.Server) error {
|
||||
go s.enrUpdateLoop(srvr.LocalNode())
|
||||
s.startEthEntryUpdate(srvr.LocalNode())
|
||||
|
||||
// Start the bloom bits servicing goroutines
|
||||
s.startBloomHandlers(params.BloomBitsBlocks)
|
||||
|
|
|
|||
|
|
@ -37,21 +37,23 @@ func (e ethEntry) ENRKey() string {
|
|||
return "eth"
|
||||
}
|
||||
|
||||
func (eth *Ethereum) enrUpdateLoop(ln *enode.LocalNode) {
|
||||
func (eth *Ethereum) startEthEntryUpdate(ln *enode.LocalNode) {
|
||||
var newHead = make(chan core.ChainHeadEvent, 10)
|
||||
sub := eth.blockchain.SubscribeChainHeadEvent(newHead)
|
||||
defer sub.Unsubscribe()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-newHead:
|
||||
ln.Set(eth.currentEthEntry())
|
||||
case <-sub.Err():
|
||||
// Would be nice to sync with eth.Stop, but there is no
|
||||
// good way to do that.
|
||||
return
|
||||
go func() {
|
||||
defer sub.Unsubscribe()
|
||||
for {
|
||||
select {
|
||||
case <-newHead:
|
||||
ln.Set(eth.currentEthEntry())
|
||||
case <-sub.Err():
|
||||
// Would be nice to sync with eth.Stop, but there is no
|
||||
// good way to do that.
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func (eth *Ethereum) currentEthEntry() *ethEntry {
|
||||
|
|
|
|||
Loading…
Reference in a new issue