minedBroadcastLoop¶
| Source (upstream pre-purge) | Current | |
|---|---|---|
| File | eth/handler.go |
handler_mining_pow.go |
| Symbol | handler.minedBroadcastLoop |
handler.minedBroadcastLoop |
| Ref | dde2da0ef~1 |
etc/v1.17.3-full-node |
Subscribes to NewMinedBlockEvent via TypeMux, broadcasts mined blocks to peers using BroadcastBlock (propagate + announce).
3-way merge — purge → getc ← upstream¶
pre-purge≈ adapted (origin inferred by similarity)fork-only
↗// minedBroadcastLoop sends mined blocks to connected peers.
func (h *handler) minedBroadcastLoop() {
defer h.wg.Done()
for {
≈ obj, ok := <-h.minedBlockSub.Chan()
if !ok || obj == nil {
return
}
↗ if ev, ok := obj.Data.(core.NewMinedBlockEvent); ok {
h.BroadcastBlock(ev.Block, true) // First propagate block to peers
h.BroadcastBlock(ev.Block, false) // Only then announce to the rest
}
}
}
core-geth validation — +5 -1
| | | |---|---| | File | [`handler.go`](https://github.com/etclabscore/core-geth/blob/v1.12.20/eth/handler.go) | | Symbol | `handler.minedBroadcastLoop` | | Ref | `v1.12.20` |--- a/core-geth/eth/handler.go
+++ b/etc/eth/handler_mining_pow.go
@@ -2,7 +2,11 @@
func (h *handler) minedBroadcastLoop() {
defer h.wg.Done()
- for obj := range h.minedBlockSub.Chan() {
+ for {
+ obj, ok := <-h.minedBlockSub.Chan()
+ if !ok || obj == nil {
+ return
+ }
if ev, ok := obj.Data.(core.NewMinedBlockEvent); ok {
h.BroadcastBlock(ev.Block, true) // First propagate block to peers
h.BroadcastBlock(ev.Block, false) // Only then announce to the rest