Skip to content

Commit f91cf22

Browse files
committed
eth/filters: apply limit to topic search positions
1 parent 3cc4015 commit f91cf22

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

eth/filters/api.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,8 +347,15 @@ func (api *FilterAPI) GetLogs(ctx context.Context, crit FilterCriteria) ([]*type
347347
if len(crit.Topics) > maxTopics {
348348
return nil, errExceedMaxTopics
349349
}
350-
if len(crit.Addresses) > api.logQueryLimit {
351-
return nil, errExceedLogQueryLimit
350+
if api.logQueryLimit != 0 {
351+
if len(crit.Addresses) > api.logQueryLimit {
352+
return nil, errExceedLogQueryLimit
353+
}
354+
for _, topics := range crit.Topics {
355+
if len(topics) > api.logQueryLimit {
356+
return nil, errExceedLogQueryLimit
357+
}
358+
}
352359
}
353360

354361
var filter *Filter

eth/filters/filter_system.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,15 @@ func (es *EventSystem) SubscribeLogs(crit ethereum.FilterQuery, logs chan []*typ
295295
if len(crit.Topics) > maxTopics {
296296
return nil, errExceedMaxTopics
297297
}
298-
if len(crit.Addresses) > es.sys.cfg.LogQueryLimit {
299-
return nil, errExceedLogQueryLimit
298+
if es.sys.cfg.LogQueryLimit != 0 {
299+
if len(crit.Addresses) > es.sys.cfg.LogQueryLimit {
300+
return nil, errExceedLogQueryLimit
301+
}
302+
for _, topics := range crit.Topics {
303+
if len(topics) > es.sys.cfg.LogQueryLimit {
304+
return nil, errExceedLogQueryLimit
305+
}
306+
}
300307
}
301308
var from, to rpc.BlockNumber
302309
if crit.FromBlock == nil {

0 commit comments

Comments
 (0)