aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-04-24 22:43:01 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-04-24 22:43:01 +0800
commitc8e21a4d17e144c4c108cf477de594bce776829a (patch)
tree4ec6d4d90fc730754457be84f2f6849b41e465b0
parent168ff36676fdc7b4e9daf21ae4dfa4dfac576dac (diff)
parentcd2782f59c11ae8399dcdd17fdd2b132223a1071 (diff)
downloadgo-tangerine-c8e21a4d17e144c4c108cf477de594bce776829a.tar.gz
go-tangerine-c8e21a4d17e144c4c108cf477de594bce776829a.tar.zst
go-tangerine-c8e21a4d17e144c4c108cf477de594bce776829a.zip
Merge pull request #803 from obscuren/log_filter_fixes
core: fixed wildcard topic filters. Closes #725
-rw-r--r--core/filter.go19
1 files changed, 14 insertions, 5 deletions
diff --git a/core/filter.go b/core/filter.go
index a924709f2..c10fb7eeb 100644
--- a/core/filter.go
+++ b/core/filter.go
@@ -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
}