whisper: fixed broken partial topic filtering

Changes in #15811 broke partial topic filtering. Re-enable it.
This commit is contained in:
Eugene Valeyev 2018-08-13 17:27:25 +03:00 committed by Guillaume Ballet
parent d8328a96b4
commit e07e507d1a
4 changed files with 5 additions and 58 deletions

View File

@ -220,7 +220,7 @@ func matchSingleTopic(topic TopicType, bt []byte) bool {
bt = bt[:TopicLength]
}
if len(bt) < TopicLength {
if len(bt) == 0 {
return false
}

View File

@ -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"))

View File

@ -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) {

View File

@ -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()
}
}