mirror of
https://github.com/gogrlx/nats-server.git
synced 2026-04-02 03:38:42 -07:00
Merge pull request #3423 from nats-io/sc
[FIXED] Subjects collide would not properly return false.
This commit is contained in:
@@ -1215,10 +1215,18 @@ func SubjectsCollide(subj1, subj2 string) bool {
|
||||
if !fwc1 && !fwc2 && len(toks1) != len(toks2) {
|
||||
return false
|
||||
}
|
||||
if lt1, lt2 := len(toks1), len(toks2); lt1 != lt2 {
|
||||
// If the shorter one only has partials then these will not collide.
|
||||
if lt1 < lt2 && !fwc1 || lt2 < lt1 && !fwc2 {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
stop := len(toks1)
|
||||
if len(toks2) < stop {
|
||||
stop = len(toks2)
|
||||
}
|
||||
|
||||
// We look for reasons to say no.
|
||||
for i := 0; i < stop; i++ {
|
||||
t1, t2 := toks1[i], toks2[i]
|
||||
@@ -1226,6 +1234,7 @@ func SubjectsCollide(subj1, subj2 string) bool {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
@@ -1458,6 +1458,14 @@ func TestSublistMatchWithEmptyTokens(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSublistSubjectCollide(t *testing.T) {
|
||||
require_False(t, SubjectsCollide("foo.*", "foo.*.bar.>"))
|
||||
require_False(t, SubjectsCollide("foo.*.bar.>", "foo.*"))
|
||||
require_True(t, SubjectsCollide("foo.*", "foo.foo"))
|
||||
require_True(t, SubjectsCollide("foo.*", "*.foo"))
|
||||
require_True(t, SubjectsCollide("foo.bar.>", "*.bar.foo"))
|
||||
}
|
||||
|
||||
// -- Benchmarks Setup --
|
||||
|
||||
var benchSublistSubs []*subscription
|
||||
|
||||
@@ -70,7 +70,7 @@ func require_True(t *testing.T, b bool) {
|
||||
func require_False(t *testing.T, b bool) {
|
||||
t.Helper()
|
||||
if b {
|
||||
t.Fatalf("require no false, but got true")
|
||||
t.Fatalf("require false, but got true")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user