Skip to content

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

← Eth Service