diff options
author | Eugene Valeyev <evgen.povt@gmail.com> | 2018-08-13 22:27:25 +0800 |
---|---|---|
committer | Guillaume Ballet <gballet@gmail.com> | 2018-08-13 22:27:25 +0800 |
commit | e07e507d1af687cd64b263038ebd3cb7be74fb40 (patch) | |
tree | 0b515ed937abceb3425ae4a17d72821db6b4f90e | |
parent | d8328a96b4943798f9dd2a8ae1c787f7e78ff8e4 (diff) | |
download | go-tangerine-e07e507d1af687cd64b263038ebd3cb7be74fb40.tar.gz go-tangerine-e07e507d1af687cd64b263038ebd3cb7be74fb40.tar.zst go-tangerine-e07e507d1af687cd64b263038ebd3cb7be74fb40.zip |
whisper: fixed broken partial topic filtering
Changes in #15811 broke partial topic filtering. Re-enable it.
-rw-r--r-- | whisper/whisperv5/filter.go | 2 | ||||
-rw-r--r-- | whisper/whisperv5/filter_test.go | 8 | ||||
-rw-r--r-- | whisper/whisperv6/filter.go | 17 | ||||
-rw-r--r-- | whisper/whisperv6/filter_test.go | 36 |
4 files changed, 5 insertions, 58 deletions
diff --git a/whisper/whisperv5/filter.go b/whisper/whisperv5/filter.go index 3190334eb..9550a7e38 100644 --- a/whisper/whisperv5/filter.go +++ b/whisper/whisperv5/filter.go @@ -220,7 +220,7 @@ func matchSingleTopic(topic TopicType, bt []byte) bool { bt = bt[:TopicLength] } - if len(bt) < TopicLength { + if len(bt) == 0 { return false } diff --git a/whisper/whisperv5/filter_test.go b/whisper/whisperv5/filter_test.go index 01034a351..c01c22668 100644 --- a/whisper/whisperv5/filter_test.go +++ b/whisper/whisperv5/filter_test.go @@ -829,16 +829,16 @@ func TestMatchSingleTopic_WithTail_ReturnTrue(t *testing.T) { } } -func TestMatchSingleTopic_NotEquals_ReturnFalse(t *testing.T) { +func TestMatchSingleTopic_PartialTopic_ReturnTrue(t *testing.T) { bt := []byte("tes") - topic := BytesToTopic(bt) + topic := BytesToTopic([]byte("test")) - if matchSingleTopic(topic, bt) { + if !matchSingleTopic(topic, bt) { t.FailNow() } } -func TestMatchSingleTopic_InsufficientLength_ReturnFalse(t *testing.T) { +func TestMatchSingleTopic_NotEquals_ReturnFalse(t *testing.T) { bt := []byte("test") topic := BytesToTopic([]byte("not_equal")) diff --git a/whisper/whisperv6/filter.go b/whisper/whisperv6/filter.go index 2f170ddeb..6a5b79674 100644 --- a/whisper/whisperv6/filter.go +++ b/whisper/whisperv6/filter.go @@ -250,23 +250,6 @@ func (f *Filter) MatchEnvelope(envelope *Envelope) bool { return f.PoW <= 0 || envelope.pow >= f.PoW } -func matchSingleTopic(topic TopicType, bt []byte) bool { - if len(bt) > TopicLength { - bt = bt[:TopicLength] - } - - if len(bt) < TopicLength { - return false - } - - for j, b := range bt { - if topic[j] != b { - return false - } - } - return true -} - // IsPubKeyEqual checks that two public keys are equal func IsPubKeyEqual(a, b *ecdsa.PublicKey) bool { if !ValidatePublicKey(a) { diff --git a/whisper/whisperv6/filter_test.go b/whisper/whisperv6/filter_test.go index 0bb7986c3..82e4aa024 100644 --- a/whisper/whisperv6/filter_test.go +++ b/whisper/whisperv6/filter_test.go @@ -829,39 +829,3 @@ func TestVariableTopics(t *testing.T) { } } } - -func TestMatchSingleTopic_ReturnTrue(t *testing.T) { - bt := []byte("test") - topic := BytesToTopic(bt) - - if !matchSingleTopic(topic, bt) { - t.FailNow() - } -} - -func TestMatchSingleTopic_WithTail_ReturnTrue(t *testing.T) { - bt := []byte("test with tail") - topic := BytesToTopic([]byte("test")) - - if !matchSingleTopic(topic, bt) { - t.FailNow() - } -} - -func TestMatchSingleTopic_NotEquals_ReturnFalse(t *testing.T) { - bt := []byte("tes") - topic := BytesToTopic(bt) - - if matchSingleTopic(topic, bt) { - t.FailNow() - } -} - -func TestMatchSingleTopic_InsufficientLength_ReturnFalse(t *testing.T) { - bt := []byte("test") - topic := BytesToTopic([]byte("not_equal")) - - if matchSingleTopic(topic, bt) { - t.FailNow() - } -} |