whisper: fixed broken partial topic filtering
Changes in #15811 broke partial topic filtering. Re-enable it.
This commit is contained in:
parent
d8328a96b4
commit
e07e507d1a
@ -220,7 +220,7 @@ func matchSingleTopic(topic TopicType, bt []byte) bool {
|
|||||||
bt = bt[:TopicLength]
|
bt = bt[:TopicLength]
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(bt) < TopicLength {
|
if len(bt) == 0 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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")
|
bt := []byte("tes")
|
||||||
topic := BytesToTopic(bt)
|
topic := BytesToTopic([]byte("test"))
|
||||||
|
|
||||||
if matchSingleTopic(topic, bt) {
|
if !matchSingleTopic(topic, bt) {
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMatchSingleTopic_InsufficientLength_ReturnFalse(t *testing.T) {
|
func TestMatchSingleTopic_NotEquals_ReturnFalse(t *testing.T) {
|
||||||
bt := []byte("test")
|
bt := []byte("test")
|
||||||
topic := BytesToTopic([]byte("not_equal"))
|
topic := BytesToTopic([]byte("not_equal"))
|
||||||
|
|
||||||
|
@ -250,23 +250,6 @@ func (f *Filter) MatchEnvelope(envelope *Envelope) bool {
|
|||||||
return f.PoW <= 0 || envelope.pow >= f.PoW
|
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
|
// IsPubKeyEqual checks that two public keys are equal
|
||||||
func IsPubKeyEqual(a, b *ecdsa.PublicKey) bool {
|
func IsPubKeyEqual(a, b *ecdsa.PublicKey) bool {
|
||||||
if !ValidatePublicKey(a) {
|
if !ValidatePublicKey(a) {
|
||||||
|
@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user