Преглед на файлове

eth: announce block after sync cycle (star topology)

Péter Szilágyi преди 8 години
родител
ревизия
bd2c54fa9f
променени са 1 файла, в които са добавени 9 реда и са изтрити 1 реда
  1. 9 1
      eth/sync.go

+ 9 - 1
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