diff --git a/pc/composite_rtp_transport.cc b/pc/composite_rtp_transport.cc index bdeaacd116..61d9990d1d 100644 --- a/pc/composite_rtp_transport.cc +++ b/pc/composite_rtp_transport.cc @@ -73,8 +73,6 @@ void CompositeRtpTransport::RemoveTransport(RtpTransportInternal* transport) { auto it = absl::c_find(transports_, transport); if (it == transports_.end()) { - RTC_NOTREACHED() << "Callers should not remove transports they did not " - "include in the composite"; return; } diff --git a/pc/jsep_transport_controller_unittest.cc b/pc/jsep_transport_controller_unittest.cc index 353a659712..7b91ad8138 100644 --- a/pc/jsep_transport_controller_unittest.cc +++ b/pc/jsep_transport_controller_unittest.cc @@ -2415,6 +2415,51 @@ TEST_P(JsepTransportControllerDatagramTest, RenegotiationCannotRemoveDatagram) { fake_params); } +TEST_P(JsepTransportControllerDatagramTest, + RenegotiationKeepsDatagramTransport) { + cricket::OpaqueTransportParameters fake_params = CreateTransportParameters(); + if (IsOfferer()) { + EXPECT_EQ(transport_controller_->GetTransportParameters(kAudioMid1), + fake_params); + EXPECT_EQ(transport_controller_->GetTransportParameters(kVideoMid1), + fake_params); + } + + auto offer = CreateSessionDescriptionForDatagramTransport(fake_params); + EXPECT_TRUE(SetDescription(SdpType::kOffer, offer.get()).ok()); + + EXPECT_EQ(transport_controller_->GetTransportParameters(kAudioMid1), + fake_params); + EXPECT_EQ(transport_controller_->GetTransportParameters(kVideoMid1), + fake_params); + + auto answer = CreateSessionDescriptionForDatagramTransport(fake_params); + EXPECT_TRUE(SetDescription(SdpType::kAnswer, answer.get()).ok()); + + EXPECT_EQ(transport_controller_->GetTransportParameters(kAudioMid1), + fake_params); + EXPECT_EQ(transport_controller_->GetTransportParameters(kVideoMid1), + fake_params); + + // Attempting to remove a datagram transport on a re-offer does not cause an + // error, but also does not remove the datagram transport. + auto reoffer = CreateSessionDescriptionForDatagramTransport(fake_params); + EXPECT_TRUE(SetDescription(SdpType::kOffer, reoffer.get()).ok()); + + EXPECT_EQ(transport_controller_->GetTransportParameters(kAudioMid1), + fake_params); + EXPECT_EQ(transport_controller_->GetTransportParameters(kVideoMid1), + fake_params); + + auto reanswer = CreateSessionDescriptionForDatagramTransport(fake_params); + EXPECT_TRUE(SetDescription(SdpType::kAnswer, reanswer.get()).ok()); + + EXPECT_EQ(transport_controller_->GetTransportParameters(kAudioMid1), + fake_params); + EXPECT_EQ(transport_controller_->GetTransportParameters(kVideoMid1), + fake_params); +} + INSTANTIATE_TEST_SUITE_P( JsepTransportControllerDatagramTests, JsepTransportControllerDatagramTest,