diff options
author | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-04-24 22:43:01 +0800 |
---|---|---|
committer | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-04-24 22:43:01 +0800 |
commit | c8e21a4d17e144c4c108cf477de594bce776829a (patch) | |
tree | 4ec6d4d90fc730754457be84f2f6849b41e465b0 | |
parent | 168ff36676fdc7b4e9daf21ae4dfa4dfac576dac (diff) | |
parent | cd2782f59c11ae8399dcdd17fdd2b132223a1071 (diff) | |
download | dexon-c8e21a4d17e144c4c108cf477de594bce776829a.tar dexon-c8e21a4d17e144c4c108cf477de594bce776829a.tar.gz dexon-c8e21a4d17e144c4c108cf477de594bce776829a.tar.bz2 dexon-c8e21a4d17e144c4c108cf477de594bce776829a.tar.lz dexon-c8e21a4d17e144c4c108cf477de594bce776829a.tar.xz dexon-c8e21a4d17e144c4c108cf477de594bce776829a.tar.zst dexon-c8e21a4d17e144c4c108cf477de594bce776829a.zip |
Merge pull request #803 from obscuren/log_filter_fixes
core: fixed wildcard topic filters. Closes #725
-rw-r--r-- | core/filter.go | 19 |
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 } |