Remove another DCHECK that fails during renegotiation.
Also adds a test case that catches both this DCHECK and the previous
one.
Bug: webrtc:9719
Change-Id: I590544a13cd178274e9c11b698c4694fd5cf0d59
No-Try: True
Tbr: steveanton@webrtc.org
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140802
Reviewed-by: Bjorn Mellem <mellem@webrtc.org>
Commit-Queue: Bjorn Mellem <mellem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28185}
diff --git a/pc/composite_rtp_transport.cc b/pc/composite_rtp_transport.cc
index bdeaacd..61d9990 100644
--- a/pc/composite_rtp_transport.cc
+++ b/pc/composite_rtp_transport.cc
@@ -73,8 +73,6 @@
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 353a659..7b91ad8 100644
--- a/pc/jsep_transport_controller_unittest.cc
+++ b/pc/jsep_transport_controller_unittest.cc
@@ -2415,6 +2415,51 @@
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,