[Unified Plan] Avoid offering two senders with the same ID
This can happen with the following sequence of API calls: 1) AddTrack(track) + offer/answer 2) RemoveTrack(track's sender) + offer/answer 3) AddTrack(same track) Since the first transceiver had already been used to send, it will not get re-used by the second call to AddTrack. Another RtpSender will be created with its ID = the track ID. But the code hits a DCHECK when CreateOffer is later called since both m= sections will offer the same track ID component of the MSID. The fix implemented here is to randomly generate a sender ID if there is already an RtpSender with the track's ID. Bug: webrtc:8734 Change-Id: Ic2dda23d66e364e77ff7505e1c37e53105a17dae Reviewed-on: https://webrtc-review.googlesource.com/84249 Commit-Queue: Steve Anton <steveanton@webrtc.org> Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/master@{#23748}
This commit is contained in:
@ -1762,7 +1762,7 @@ TEST_P(PeerConnectionInterfaceTest, IceCandidates) {
|
||||
|
||||
// Test that CreateOffer and CreateAnswer will fail if the track labels are
|
||||
// not unique.
|
||||
TEST_P(PeerConnectionInterfaceTest, CreateOfferAnswerWithInvalidStream) {
|
||||
TEST_F(PeerConnectionInterfaceTestPlanB, CreateOfferAnswerWithInvalidStream) {
|
||||
CreatePeerConnectionWithoutDtls();
|
||||
// Create a regular offer for the CreateAnswer test later.
|
||||
std::unique_ptr<SessionDescriptionInterface> offer;
|
||||
|
Reference in New Issue
Block a user