зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1421965: Avoid nullptr crash when conduits cannot be created. r=drno
MozReview-Commit-ID: AdWiIbpFP0Y --HG-- extra : rebase_source : 5e2327f1ddf2249ba0f55c5dcbb4acdf49b65133
This commit is contained in:
Родитель
46f19d31a7
Коммит
184f4a9578
|
@ -1148,6 +1148,10 @@ PeerConnectionMedia::AddTransceiver(
|
|||
aSendTrack,
|
||||
mCall.get());
|
||||
|
||||
if (!transceiver->IsValid()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
if (aSendTrack) {
|
||||
// implement checking for peerIdentity (where failure == black/silence)
|
||||
nsIDocument* doc = mParent->GetWindow()->GetExtantDoc();
|
||||
|
|
|
@ -56,6 +56,10 @@ TransceiverImpl::TransceiverImpl(
|
|||
InitAudio();
|
||||
}
|
||||
|
||||
if (!IsValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
mConduit->SetPCHandle(mPCHandle);
|
||||
|
||||
StartReceiveStream();
|
||||
|
@ -78,6 +82,14 @@ TransceiverImpl::InitAudio()
|
|||
{
|
||||
mConduit = AudioSessionConduit::Create();
|
||||
|
||||
if (!mConduit) {
|
||||
MOZ_MTLOG(ML_ERROR, mPCHandle << "[" << mMid << "]: " << __FUNCTION__ <<
|
||||
": Failed to create AudioSessionConduit");
|
||||
// TODO(bug 1422897): We need a way to record this when it happens in the
|
||||
// wild.
|
||||
return;
|
||||
}
|
||||
|
||||
mReceivePipeline = new MediaPipelineReceiveAudio(
|
||||
mPCHandle,
|
||||
mMainThread.get(),
|
||||
|
@ -91,6 +103,14 @@ TransceiverImpl::InitVideo()
|
|||
{
|
||||
mConduit = VideoSessionConduit::Create(mCallWrapper);
|
||||
|
||||
if (!mConduit) {
|
||||
MOZ_MTLOG(ML_ERROR, mPCHandle << "[" << mMid << "]: " << __FUNCTION__ <<
|
||||
": Failed to create VideoSessionConduit");
|
||||
// TODO(bug 1422897): We need a way to record this when it happens in the
|
||||
// wild.
|
||||
return;
|
||||
}
|
||||
|
||||
mReceivePipeline = new MediaPipelineReceiveVideo(
|
||||
mPCHandle,
|
||||
mMainThread.get(),
|
||||
|
|
|
@ -59,6 +59,11 @@ public:
|
|||
dom::MediaStreamTrack* aSendTrack,
|
||||
WebRtcCallWrapper* aCallWrapper);
|
||||
|
||||
bool IsValid() const
|
||||
{
|
||||
return !!mConduit;
|
||||
}
|
||||
|
||||
nsresult UpdateSendTrack(dom::MediaStreamTrack* aSendTrack);
|
||||
|
||||
nsresult UpdateSinkIdentity(dom::MediaStreamTrack* aTrack,
|
||||
|
|
Загрузка…
Ссылка в новой задаче