eth/filters: apply limit to topic search positions

This commit is contained in:
zsfelfoldi 2025-09-16 13:09:40 +02:00
parent 3cc4015d29
commit f91cf22312
2 changed files with 18 additions and 4 deletions

View file

@ -347,8 +347,15 @@ func (api *FilterAPI) GetLogs(ctx context.Context, crit FilterCriteria) ([]*type
if len(crit.Topics) > maxTopics {
return nil, errExceedMaxTopics
}
if len(crit.Addresses) > api.logQueryLimit {
return nil, errExceedLogQueryLimit
if api.logQueryLimit != 0 {
if len(crit.Addresses) > api.logQueryLimit {
return nil, errExceedLogQueryLimit
}
for _, topics := range crit.Topics {
if len(topics) > api.logQueryLimit {
return nil, errExceedLogQueryLimit
}
}
}
var filter *Filter

View file

@ -295,8 +295,15 @@ func (es *EventSystem) SubscribeLogs(crit ethereum.FilterQuery, logs chan []*typ
if len(crit.Topics) > maxTopics {
return nil, errExceedMaxTopics
}
if len(crit.Addresses) > es.sys.cfg.LogQueryLimit {
return nil, errExceedLogQueryLimit
if es.sys.cfg.LogQueryLimit != 0 {
if len(crit.Addresses) > es.sys.cfg.LogQueryLimit {
return nil, errExceedLogQueryLimit
}
for _, topics := range crit.Topics {
if len(topics) > es.sys.cfg.LogQueryLimit {
return nil, errExceedLogQueryLimit
}
}
}
var from, to rpc.BlockNumber
if crit.FromBlock == nil {