aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZsolt Felfoldi <zsfelfoldi@gmail.com>2017-01-23 09:35:46 +0800
committerZsolt Felfoldi <zsfelfoldi@gmail.com>2017-01-26 11:23:53 +0800
commit12379c697aa72f4ce08733638e6f7e5dcdf3f94f (patch)
treec3f44e91386e0eb8fcd64a7ebdf5cf9ef20991df
parentf5348e17f8d487a7bd34ccef6dcb6dc376407f40 (diff)
downloaddexon-12379c697aa72f4ce08733638e6f7e5dcdf3f94f.tar
dexon-12379c697aa72f4ce08733638e6f7e5dcdf3f94f.tar.gz
dexon-12379c697aa72f4ce08733638e6f7e5dcdf3f94f.tar.bz2
dexon-12379c697aa72f4ce08733638e6f7e5dcdf3f94f.tar.lz
dexon-12379c697aa72f4ce08733638e6f7e5dcdf3f94f.tar.xz
dexon-12379c697aa72f4ce08733638e6f7e5dcdf3f94f.tar.zst
dexon-12379c697aa72f4ce08733638e6f7e5dcdf3f94f.zip
les: remove delayed les server starting
-rw-r--r--eth/backend.go1
-rw-r--r--eth/handler.go2
-rw-r--r--eth/sync.go9
-rw-r--r--les/server.go30
4 files changed, 5 insertions, 37 deletions
diff --git a/eth/backend.go b/eth/backend.go
index e0233db36..af120cbad 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -105,7 +105,6 @@ type Config struct {
type LesServer interface {
Start(srvr *p2p.Server)
- Synced()
Stop()
Protocols() []p2p.Protocol
}
diff --git a/eth/handler.go b/eth/handler.go
index 63ba0821f..e03c89149 100644
--- a/eth/handler.go
+++ b/eth/handler.go
@@ -173,7 +173,7 @@ func NewProtocolManager(config *params.ChainConfig, fastSync bool, networkId int
return blockchain.CurrentBlock().NumberU64()
}
inserter := func(blocks types.Blocks) (int, error) {
- manager.setSynced() // Mark initial sync done on any fetcher import
+ atomic.StoreUint32(&manager.synced, 1) // Mark initial sync done on any fetcher import
return manager.insertChain(blocks)
}
manager.fetcher = fetcher.New(blockchain.GetBlockByHash, validator, manager.BroadcastBlock, heighter, inserter, manager.removePeer)
diff --git a/eth/sync.go b/eth/sync.go
index 234534b4f..373cc2054 100644
--- a/eth/sync.go
+++ b/eth/sync.go
@@ -181,7 +181,7 @@ func (pm *ProtocolManager) synchronise(peer *peer) {
if err := pm.downloader.Synchronise(peer.id, pHead, pTd, mode); err != nil {
return
}
- pm.setSynced() // Mark initial sync done
+ atomic.StoreUint32(&pm.synced, 1) // Mark initial sync done
// If fast sync was enabled, and we synced up, disable it
if atomic.LoadUint32(&pm.fastSync) == 1 {
@@ -192,10 +192,3 @@ func (pm *ProtocolManager) synchronise(peer *peer) {
}
}
}
-
-// setSynced sets the synced flag and notifies the light server if present
-func (pm *ProtocolManager) setSynced() {
- if atomic.SwapUint32(&pm.synced, 1) == 0 && pm.lesServer != nil {
- pm.lesServer.Synced()
- }
-}
diff --git a/les/server.go b/les/server.go
index e55616a44..c4c6fcab5 100644
--- a/les/server.go
+++ b/les/server.go
@@ -42,9 +42,7 @@ type LesServer struct {
fcManager *flowcontrol.ClientManager // nil if our node is client only
fcCostStats *requestCostStats
defParams *flowcontrol.ServerParams
- srvr *p2p.Server
- synced, stopped bool
- lock sync.Mutex
+ stopped bool
}
func NewLesServer(eth *eth.Ethereum, config *eth.Config) (*LesServer, error) {
@@ -70,35 +68,13 @@ func (s *LesServer) Protocols() []p2p.Protocol {
return s.protocolManager.SubProtocols
}
-// Start only starts the actual service if the ETH protocol has already been synced,
-// otherwise it will be started by Synced()
+// Start starts the LES server
func (s *LesServer) Start(srvr *p2p.Server) {
- s.lock.Lock()
- defer s.lock.Unlock()
-
- s.srvr = srvr
- if s.synced {
- s.protocolManager.Start(s.srvr)
- }
-}
-
-// Synced notifies the server that the ETH protocol has been synced and LES service can be started
-func (s *LesServer) Synced() {
- s.lock.Lock()
- defer s.lock.Unlock()
-
- s.synced = true
- if s.srvr != nil && !s.stopped {
- s.protocolManager.Start(s.srvr)
- }
+ s.protocolManager.Start(srvr)
}
// Stop stops the LES service
func (s *LesServer) Stop() {
- s.lock.Lock()
- defer s.lock.Unlock()
-
- s.stopped = true
s.fcCostStats.store()
s.fcManager.Stop()
go func() {