Index: webrtc/api/webrtcsessiondescriptionfactory.cc |
diff --git a/webrtc/api/webrtcsessiondescriptionfactory.cc b/webrtc/api/webrtcsessiondescriptionfactory.cc |
index 29da6f2c022bf5dfc34b525833bb4ff716ac2cac..1f811f59117afd539e2349d5010c52fd0aa0fc22 100644 |
--- a/webrtc/api/webrtcsessiondescriptionfactory.cc |
+++ b/webrtc/api/webrtcsessiondescriptionfactory.cc |
@@ -338,6 +338,18 @@ void WebRtcSessionDescriptionFactory::OnMessage(rtc::Message* msg) { |
void WebRtcSessionDescriptionFactory::InternalCreateOffer( |
CreateSessionDescriptionRequest request) { |
+ if (session_->local_description()) { |
+ for (const cricket::TransportInfo& transport : |
+ session_->local_description()->description()->transport_infos()) { |
+ // If the needs-ice-restart flag is set as described by JSEP, we should |
+ // generate an offer with a new ufrag/password to trigger an ICE restart. |
+ if (session_->NeedsIceRestart(transport.content_name)) { |
+ request.options.transport_options[transport.content_name].ice_restart = |
+ true; |
+ } |
+ } |
+ } |
+ |
cricket::SessionDescription* desc(session_desc_factory_.CreateOffer( |
request.options, session_->local_description() |
? session_->local_description()->description() |