|
|
@@ -131,17 +131,26 @@ Logs:
|
|
|
logTopics := make([]common.Hash, len(self.topics))
|
|
|
copy(logTopics, log.Topics)
|
|
|
|
|
|
+ // If the to filtered topics is greater than the amount of topics in
|
|
|
+ // logs, skip.
|
|
|
+ if len(self.topics) > len(log.Topics) {
|
|
|
+ continue Logs
|
|
|
+ }
|
|
|
+
|
|
|
for i, topics := range self.topics {
|
|
|
+ var match bool
|
|
|
for _, topic := range topics {
|
|
|
- var match bool
|
|
|
// common.Hash{} is a match all (wildcard)
|
|
|
if (topic == common.Hash{}) || log.Topics[i] == topic {
|
|
|
match = true
|
|
|
- }
|
|
|
- if !match {
|
|
|
- continue Logs
|
|
|
+ break
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if !match {
|
|
|
+ continue Logs
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
ret = append(ret, log)
|
|
|
@@ -168,7 +177,7 @@ func (self *Filter) bloomFilter(block *types.Block) bool {
|
|
|
for _, sub := range self.topics {
|
|
|
var included bool
|
|
|
for _, topic := range sub {
|
|
|
- if types.BloomLookup(block.Bloom(), topic) {
|
|
|
+ if (topic == common.Hash{}) || types.BloomLookup(block.Bloom(), topic) {
|
|
|
included = true
|
|
|
break
|
|
|
}
|