eth/filters: shadow copy && reset reorglog

Signed-off-by: jsvisa <delweng@gmail.com>
This commit is contained in:
jsvisa 2023-07-04 22:46:33 +08:00
parent 5600bbf03e
commit 1589685a59

View file

@ -399,6 +399,7 @@ func (api *FilterAPI) histLogs(notifier notifier, rpcSub *rpc.Subscription, from
} }
case logs := <-reorgLogsCh: case logs := <-reorgLogsCh:
for _, log := range logs { for _, log := range logs {
log := log
reorgLogs = append(reorgLogs, log) reorgLogs = append(reorgLogs, log)
// Update the reorgBlock to the last removed log's block number or the first added log's // Update the reorgBlock to the last removed log's block number or the first added log's
if reorgBlock == 0 || log.Removed { if reorgBlock == 0 || log.Removed {
@ -408,7 +409,7 @@ func (api *FilterAPI) histLogs(notifier notifier, rpcSub *rpc.Subscription, from
reorged = reorgBlock < delivered reorged = reorgBlock < delivered
// Reorg happens in the future // Reorg happens in the future
if !reorged { if !reorged {
reorgLogs = reorgLogs[:] reorgLogs = nil
} }
case err := <-errChan: case err := <-errChan:
// Range filter is done or error, let's also stop the reorgLogs subscribe // Range filter is done or error, let's also stop the reorgLogs subscribe