diff options
author | Péter Szilágyi <peterke@gmail.com> | 2017-04-10 01:12:46 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2017-04-10 01:12:46 +0800 |
commit | bd2c54fa9f16d57d6158496351da43e3caf66c87 (patch) | |
tree | c546adffde1b0593b256fc76ee6c89808de753a1 /eth | |
parent | 8570ef19eb8dfe4e2a450525c589dec291f3a517 (diff) | |
download | go-tangerine-bd2c54fa9f16d57d6158496351da43e3caf66c87.tar go-tangerine-bd2c54fa9f16d57d6158496351da43e3caf66c87.tar.gz go-tangerine-bd2c54fa9f16d57d6158496351da43e3caf66c87.tar.bz2 go-tangerine-bd2c54fa9f16d57d6158496351da43e3caf66c87.tar.lz go-tangerine-bd2c54fa9f16d57d6158496351da43e3caf66c87.tar.xz go-tangerine-bd2c54fa9f16d57d6158496351da43e3caf66c87.tar.zst go-tangerine-bd2c54fa9f16d57d6158496351da43e3caf66c87.zip |
eth: announce block after sync cycle (star topology)
Diffstat (limited to 'eth')
-rw-r--r-- | eth/sync.go | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/eth/sync.go b/eth/sync.go index f2cae6c19..68d3afdb8 100644 --- a/eth/sync.go +++ b/eth/sync.go @@ -189,7 +189,15 @@ func (pm *ProtocolManager) synchronise(peer *peer) { return } atomic.StoreUint32(&pm.synced, 1) // Mark initial sync done - + if head := pm.blockchain.CurrentBlock(); head.NumberU64() > 0 { + // We've completed a sync cycle, notify all peers of new state. This path is + // essential in star-topology networks where a gateway node needs to notify + // all its out-of-date peers of the availability of a new block. This failure + // scenario will most often crop up in private and hackathon networks with + // degenerate connectivity, but it should be healthy for the mainnet too to + // more reliably update peers or the local TD state. + go pm.BroadcastBlock(head, false) + } // If fast sync was enabled, and we synced up, disable it if atomic.LoadUint32(&pm.fastSync) == 1 { // Disable fast sync if we indeed have something in our chain |