diff --git a/pc/peerconnection.cc b/pc/peerconnection.cc index 3b9b9c8290..e60474ca1d 100644 --- a/pc/peerconnection.cc +++ b/pc/peerconnection.cc @@ -2997,6 +2997,12 @@ bool PeerConnection::SetConfiguration(const RTCConfiguration& configuration, return SafeSetError(RTCErrorType::INVALID_MODIFICATION, error); } + if (configuration.use_media_transport_for_data_channels || + configuration.use_media_transport) { + RTC_CHECK(configuration.bundle_policy == kBundlePolicyMaxBundle) + << "Media transport requires MaxBundle policy."; + } + // The simplest (and most future-compatible) way to tell if the config was // modified in an invalid way is to copy each property we do support // modifying, then use operator==. There are far more properties we don't diff --git a/pc/peerconnectioninterface_unittest.cc b/pc/peerconnectioninterface_unittest.cc index 362c8517ad..fe8fd8ddea 100644 --- a/pc/peerconnectioninterface_unittest.cc +++ b/pc/peerconnectioninterface_unittest.cc @@ -1426,7 +1426,10 @@ TEST_P(PeerConnectionInterfaceTest, GetConfigurationAfterCreatePeerConnection) { // Check that GetConfiguration returns the last configuration passed into // SetConfiguration. TEST_P(PeerConnectionInterfaceTest, GetConfigurationAfterSetConfiguration) { - CreatePeerConnection(); + PeerConnectionInterface::RTCConfiguration starting_config; + starting_config.bundle_policy = + webrtc::PeerConnection::kBundlePolicyMaxBundle; + CreatePeerConnection(starting_config); PeerConnectionInterface::RTCConfiguration config = pc_->GetConfiguration(); config.type = PeerConnectionInterface::kRelay;