void PeerConnectionMedia::EnsureIceGathering_s(bool aDefaultRouteOnly, bool aProxyOnly) { if (mProxyServer) { mIceCtxHdlr->ctx()->SetProxyServer(*mProxyServer); } else if (aProxyOnly) { IceGatheringStateChange_s(mIceCtxHdlr->ctx().get(), NrIceCtx::ICE_CTX_GATHER_COMPLETE); return; } // Make sure we don't call NrIceCtx::StartGathering if we're in e10s mode // and we received no STUN addresses from the parent process. In the // absence of previously provided STUN addresses, StartGathering will // attempt to gather them (as in non-e10s mode), and this will cause a // sandboxing exception in e10s mode. if (!mStunAddrs.Length() && XRE_IsContentProcess()) { CSFLogInfo(LOGTAG, "%s: No STUN addresses returned from parent process", __FUNCTION__); return; } // Belt and suspenders - in e10s mode, the call below to SetStunAddrs // needs to have the proper flags set on ice ctx. For non-e10s, // setting those flags happens in StartGathering. We could probably // just set them here, and only do it here. mIceCtxHdlr->ctx()->SetCtxFlags(aDefaultRouteOnly, aProxyOnly); if (mStunAddrs.Length()) { mIceCtxHdlr->ctx()->SetStunAddrs(mStunAddrs); } // Start gathering, but only if there are streams for (size_t i = 0; i < mIceCtxHdlr->ctx()->GetStreamCount(); ++i) { if (mIceCtxHdlr->ctx()->GetStream(i)) { mIceCtxHdlr->ctx()->StartGathering(aDefaultRouteOnly, aProxyOnly); return; } } // If there are no streams, we're probably in a situation where we've rolled // back while still waiting for our proxy configuration to come back. Make // sure content knows that the rollback has stuck wrt gathering. IceGatheringStateChange_s(mIceCtxHdlr->ctx().get(), NrIceCtx::ICE_CTX_GATHER_COMPLETE); }
void PeerConnectionMedia::EnsureIceGathering_s() { if (mProxyServer) { mIceCtx->SetProxyServer(*mProxyServer); } // Start gathering, but only if there are streams for (size_t i = 0; i < mIceCtx->GetStreamCount(); ++i) { if (mIceCtx->GetStream(i)) { mIceCtx->StartGathering(); return; } } // If there are no streams, we're probably in a situation where we've rolled // back while still waiting for our proxy configuration to come back. Make // sure content knows that the rollback has stuck wrt gathering. IceGatheringStateChange_s(mIceCtx.get(), NrIceCtx::ICE_CTX_GATHER_COMPLETE); }