Skip to content

Commit afad830

Browse files
authored
fix: non-existing block-number bouns to latest instead of 'pending' (#2980)
bound out-ouf-upper bound block number to latest
1 parent e4b0ea5 commit afad830

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

rpc/v6/events.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,9 @@ func setEventFilterRange(filter blockchain.EventFilterer, fromID, toID *BlockID,
134134
case id.Pending:
135135
return filter.SetRangeEndBlockByNumber(filterRange, latestHeight+1)
136136
default:
137+
if filterRange == blockchain.EventFilterTo {
138+
return filter.SetRangeEndBlockByNumber(filterRange, min(id.Number, latestHeight))
139+
}
137140
return filter.SetRangeEndBlockByNumber(filterRange, id.Number)
138141
}
139142
}

rpc/v6/events_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ func TestEvents(t *testing.T) {
5959
}
6060

6161
t.Run("filter non-existent", func(t *testing.T) {
62-
t.Run("block number", func(t *testing.T) {
62+
t.Run("block number - bound to latest", func(t *testing.T) {
6363
args.ToBlock = &rpc.BlockID{Number: 55}
6464
events, err := handler.Events(args)
6565
require.Nil(t, err)
66-
require.Len(t, events.Events, 5)
66+
require.Len(t, events.Events, 4)
6767
})
6868

6969
t.Run("block hash", func(t *testing.T) {
@@ -208,7 +208,7 @@ func TestEvents(t *testing.T) {
208208

209209
t.Run("get pending events with pagination", func(t *testing.T) {
210210
var err error
211-
pendingB, err = gw.BlockByNumber(t.Context(), 5)
211+
pendingB, err = gw.BlockByNumber(t.Context(), 6)
212212
require.Nil(t, err)
213213

214214
args = rpc.EventsArg{
@@ -238,9 +238,9 @@ func TestEvents(t *testing.T) {
238238
require.NotEmpty(t, events.ContinuationToken)
239239
}
240240

241-
assert.Equal(t, actualEvent.From, expectedEvent.From)
242-
assert.Equal(t, actualEvent.Keys, expectedEvent.Keys)
243-
assert.Equal(t, actualEvent.Data, expectedEvent.Data)
241+
assert.Equal(t, expectedEvent.From, actualEvent.From)
242+
assert.Equal(t, expectedEvent.Keys, actualEvent.Keys)
243+
assert.Equal(t, expectedEvent.Data, actualEvent.Data)
244244

245245
args.ContinuationToken = events.ContinuationToken
246246
}

rpc/v8/events.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ func setEventFilterRange(filter blockchain.EventFilterer, from, to *BlockID, lat
3939
case hash:
4040
return filter.SetRangeEndBlockByHash(filterRange, blockID.Hash())
4141
case number:
42+
if filterRange == blockchain.EventFilterTo {
43+
return filter.SetRangeEndBlockByNumber(filterRange, min(blockID.Number(), latestHeight))
44+
}
4245
return filter.SetRangeEndBlockByNumber(filterRange, blockID.Number())
4346
default:
4447
panic("Unknown block id type")

0 commit comments

Comments
 (0)