From 43afa1e462a082136357d2d872429b20e84ba7cd Mon Sep 17 00:00:00 2001 From: jsvisa Date: Tue, 25 Jul 2023 11:17:33 +0800 Subject: [PATCH] eth/filters: deliver the same block logs if reorg occured Signed-off-by: jsvisa --- eth/filters/api.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/eth/filters/api.go b/eth/filters/api.go index fc6341804e..3365072725 100644 --- a/eth/filters/api.go +++ b/eth/filters/api.go @@ -408,12 +408,11 @@ func (api *FilterAPI) histLogs(notifier notifier, rpcSub *rpc.Subscription, from } } case log := <-histLogs: - if reorged { - continue + // If ChainReorg is detected, we need to deliver the last block's full logs + if !reorged || delivered == log.BlockNumber { + delivered = log.BlockNumber + notifier.Notify(rpcSub.ID, &log) } - // TODO: deliver the same block logs - delivered = log.BlockNumber - notifier.Notify(rpcSub.ID, &log) case <-rpcSub.Err(): // client send an unsubscribe request liveLogsSub.Unsubscribe() closeC <- struct{}{}