diff --git a/eth/filters/api.go b/eth/filters/api.go index 33c746f084..d678c40389 100644 --- a/eth/filters/api.go +++ b/eth/filters/api.go @@ -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 diff --git a/eth/filters/filter_system.go b/eth/filters/filter_system.go index 01e5f787b0..0916d834ba 100644 --- a/eth/filters/filter_system.go +++ b/eth/filters/filter_system.go @@ -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 {