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:
Byron Campen [:bwc] 2017-12-04 12:57:26 -06:00
Родитель 46f19d31a7
Коммит 184f4a9578
3 изменённых файлов: 29 добавлений и 0 удалений

Просмотреть файл

@ -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,