diff --git a/.changeset/many-seas-fry.md b/.changeset/many-seas-fry.md deleted file mode 100644 index a31f49c77..000000000 --- a/.changeset/many-seas-fry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@fake-scope/fake-pkg": patch ---- - -Add turn detection protobufs diff --git a/CHANGELOG.md b/CHANGELOG.md index 45fa17019..bf5cc0517 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # github.com/livekit/protocol +## 1.45.6 + +### Patch Changes + +- Add turn detection protobufs - [#1485](https://github.com/livekit/protocol/pull/1485) ([@chenghao-mou](https://github.com/chenghao-mou)) + +- fix change set for eot changes - [#1515](https://github.com/livekit/protocol/pull/1515) ([@chenghao-mou](https://github.com/chenghao-mou)) + ## 1.45.5 ## 1.45.4 diff --git a/package.json b/package.json index 4abc5cf05..8c31dd670 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "github.com/livekit/protocol", "private": true, - "version": "1.45.5", + "version": "1.45.6", "scripts": { "changeset": "changeset", "ci:publish": "pnpm --filter @livekit/protocol run build && changeset publish" diff --git a/packages/javascript/CHANGELOG.md b/packages/javascript/CHANGELOG.md index a144cbe90..fa76e4611 100644 --- a/packages/javascript/CHANGELOG.md +++ b/packages/javascript/CHANGELOG.md @@ -1,5 +1,7 @@ # @livekit/protocol +## 1.45.6 + ## 1.45.5 ### Patch Changes diff --git a/packages/javascript/package.json b/packages/javascript/package.json index 447901b10..11f47cea0 100644 --- a/packages/javascript/package.json +++ b/packages/javascript/package.json @@ -1,6 +1,6 @@ { "name": "@livekit/protocol", - "version": "1.45.5", + "version": "1.45.6", "description": "", "type": "module", "require": "dist/index.cjs", diff --git a/sip/sip.go b/sip/sip.go index 87f9cec79..69500c3bb 100644 --- a/sip/sip.go +++ b/sip/sip.go @@ -550,7 +550,8 @@ func MatchTrunkDetailed(it iters.Iter[*livekit.SIPInboundTrunkInfo], call *rpc.S result.MatchType = TrunkMatchSpecific return result, nil } - // Keep searching! We want to know if there are any conflicting Trunk definitions. + // A trunk matches at most once per call; remaining numbers on this trunk cannot change the decision. + break } else { opt.Filtered(tr, TrunkFilteredCalledNumberDisallowed) } diff --git a/sip/sip_test.go b/sip/sip_test.go index bed65407c..d4f3258dc 100644 --- a/sip/sip_test.go +++ b/sip/sip_test.go @@ -287,6 +287,32 @@ func TestSIPMatchTrunk(t *testing.T) { } } +// TestSIPMatchTrunkSameTrunkDuplicateNumberForms verifies that a trunk listing +// the same number in both +E.164 and bare forms is not treated as a conflict +// with itself. Regression test for "Multiple SIP Trunks matched" when a user +// configures both "+19793169351" and "19793169351" on one trunk. +func TestSIPMatchTrunkSameTrunkDuplicateNumberForms(t *testing.T) { + trunks := []*livekit.SIPInboundTrunkInfo{ + {SipTrunkId: "aaa", Numbers: []string{"+" + sipNumber2, sipNumber2}}, + } + for _, toNum := range []string{sipNumber2, "+" + sipNumber2} { + t.Run("to="+toNum, func(t *testing.T) { + call := &rpc.SIPCall{ + SipCallId: "test-call-id", + SourceIp: "1.1.1.1", + From: &livekit.SIPUri{User: sipNumber1, Host: "sip.example.com"}, + To: &livekit.SIPUri{User: toNum}, + } + call.Address = call.To + got, err := MatchTrunkIter(iters.Slice(trunks), call, WithTrunkConflict(func(t1, t2 *livekit.SIPInboundTrunkInfo, reason TrunkConflictReason) { + t.Fatalf("unexpected conflict: %v\n%v\nvs\n%v", reason, t1, t2) + })) + require.NoError(t, err) + require.Equal(t, trunks[0], got) + }) + } +} + func TestSIPValidateTrunks(t *testing.T) { for _, c := range trunkCases { c := c