mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-23 13:16:42 +00:00
eth/filters: check hist only mode
Signed-off-by: Delweng <delweng@gmail.com>
This commit is contained in:
parent
f50087ebc7
commit
8c429c95b3
2 changed files with 13 additions and 10 deletions
|
|
@ -398,16 +398,19 @@ func (api *FilterAPI) logs(ctx context.Context, notifier notifier, rpcSub *rpc.S
|
|||
return api.liveLogs(ctx, notifier, rpcSub, crit)
|
||||
}
|
||||
|
||||
// if toBlock is limited and handled, no need to subscribe live logs anymore
|
||||
if toBlock := crit.ToBlock; toBlock != nil {
|
||||
if header := api.sys.backend.CurrentHeader(); header != nil && toBlock.Sign() > 0 && toBlock.Cmp(header.Number) <= 0 {
|
||||
return errors.New("historical only log subscription is not supported")
|
||||
}
|
||||
}
|
||||
|
||||
go func() {
|
||||
// do historical sync first
|
||||
head, err := api.histLogs(ctx, notifier, rpcSub, crit)
|
||||
_, err := api.histLogs(ctx, notifier, rpcSub, crit)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
// if toBlock is limited and handled, no need to subscribe live logs anymore
|
||||
if toBlock := crit.ToBlock; toBlock != nil && toBlock.Sign() > 0 && toBlock.Cmp(big.NewInt(head)) <= 0 {
|
||||
return
|
||||
}
|
||||
// then subscribe from the header
|
||||
api.liveLogs(ctx, notifier, rpcSub, crit)
|
||||
}()
|
||||
|
|
|
|||
|
|
@ -799,11 +799,11 @@ func TestLogsSubscription(t *testing.T) {
|
|||
FilterCriteria{FromBlock: big.NewInt(1), ToBlock: pendingBlockNumber},
|
||||
allLogs, newMockNotifier(), &rpc.Subscription{ID: rpc.NewID()}, nil,
|
||||
},
|
||||
// from 1 to 3
|
||||
{
|
||||
FilterCriteria{FromBlock: big.NewInt(1), ToBlock: big.NewInt(3)},
|
||||
allLogs[0:3], newMockNotifier(), &rpc.Subscription{ID: rpc.NewID()}, nil,
|
||||
},
|
||||
// // from 1 to 3
|
||||
// {
|
||||
// FilterCriteria{FromBlock: big.NewInt(1), ToBlock: big.NewInt(3)},
|
||||
// allLogs[0:3], newMockNotifier(), &rpc.Subscription{ID: rpc.NewID()}, nil,
|
||||
// },
|
||||
}
|
||||
|
||||
// subscribe logs
|
||||
|
|
|
|||
Loading…
Reference in a new issue