This commit is contained in:
Nikita Meshcheriakov 2026-03-18 19:14:21 +00:00 committed by GitHub
commit d9d368d755
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 11 deletions

View file

@ -477,10 +477,6 @@ func (api *FilterAPI) GetLogs(ctx context.Context, crit FilterCriteria) ([]*type
if crit.ToBlock != nil { if crit.ToBlock != nil {
end = crit.ToBlock.Int64() end = crit.ToBlock.Int64()
} }
// Block numbers below 0 are special cases.
if begin > 0 && end > 0 && begin > end {
return nil, errInvalidBlockRange
}
if begin >= 0 && begin < int64(api.events.backend.HistoryPruningCutoff()) { if begin >= 0 && begin < int64(api.events.backend.HistoryPruningCutoff()) {
return nil, &history.PrunedHistoryError{} return nil, &history.PrunedHistoryError{}
} }

View file

@ -142,10 +142,18 @@ func (f *Filter) Logs(ctx context.Context) ([]*types.Log, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
end, err := resolveSpecial(f.end) var end uint64
if f.begin != f.end {
end, err = resolveSpecial(f.end)
if err != nil { if err != nil {
return nil, err return nil, err
} }
} else {
end = begin
}
if begin > end {
return nil, errInvalidBlockRange
}
if f.rangeLimit != 0 && (end-begin) > f.rangeLimit { if f.rangeLimit != 0 && (end-begin) > f.rangeLimit {
return nil, fmt.Errorf("exceed maximum block range: %d", f.rangeLimit) return nil, fmt.Errorf("exceed maximum block range: %d", f.rangeLimit)
} }
@ -389,9 +397,6 @@ func (f *Filter) rangeLogs(ctx context.Context, firstBlock, lastBlock uint64) ([
}() }()
} }
if firstBlock > lastBlock {
return nil, nil
}
mb := f.sys.backend.NewMatcherBackend() mb := f.sys.backend.NewMatcherBackend()
defer mb.Close() defer mb.Close()

View file

@ -358,6 +358,11 @@ func testFilters(t *testing.T, history uint64, noHistory bool) {
}, },
{ {
f: sys.NewRangeFilter(int64(rpc.LatestBlockNumber), int64(rpc.FinalizedBlockNumber), nil, nil, 0), f: sys.NewRangeFilter(int64(rpc.LatestBlockNumber), int64(rpc.FinalizedBlockNumber), nil, nil, 0),
err: "invalid block range params",
},
{
f: sys.NewRangeFilter(int64(rpc.LatestBlockNumber), int64(rpc.EarliestBlockNumber), nil, nil, 0),
err: "invalid block range params",
}, },
{ {
f: sys.NewRangeFilter(int64(rpc.SafeBlockNumber), int64(rpc.LatestBlockNumber), nil, nil, 0), f: sys.NewRangeFilter(int64(rpc.SafeBlockNumber), int64(rpc.LatestBlockNumber), nil, nil, 0),