Bug 1425956 - Part 3: Remove duplicate track ids on incoming SDP. r=drno

MozReview-Commit-ID: Ldac3oB5ocz

--HG--
extra : rebase_source : 9066ff2aae30aee610ad6807ad566bfaedd0ea51
extra : source : f1dcabc223896a5280041480596f6c9ba8d78a99
This commit is contained in:
Byron Campen [:bwc] 2017-12-18 17:52:44 -06:00
parent 95c68733b2
commit 3361602026

View File

@ -364,6 +364,10 @@ JsepSessionImpl::RemoveDuplicateTrackIds(Sdp* sdp)
for (size_t i = 0; i < sdp->GetMediaSectionCount(); ++i) {
SdpMediaSection& msection(sdp->GetMediaSection(i));
if (mSdpHelper.MsectionIsDisabled(msection)) {
continue;
}
std::vector<std::string> streamIds;
std::string trackId;
nsresult rv = mSdpHelper.GetIdsFromMsid(*sdp,
@ -390,6 +394,9 @@ JsepSessionImpl::RemoveDuplicateTrackIds(Sdp* sdp)
mediaAttrs.SetAttribute(newMsids.release());
}
trackIds.insert(trackId);
} else if (rv != NS_ERROR_NOT_AVAILABLE) {
// Error has already been set
return rv;
}
}
@ -1313,18 +1320,6 @@ JsepSessionImpl::ParseSdp(const std::string& sdp, UniquePtr<Sdp>* parsedp)
return NS_ERROR_INVALID_ARG;
}
std::vector<std::string> streamIds;
std::string trackId;
nsresult rv = mSdpHelper.GetIdsFromMsid(*parsed,
parsed->GetMediaSection(i),
&streamIds,
&trackId);
if (NS_FAILED(rv) && (rv != NS_ERROR_NOT_AVAILABLE)) {
// Error has already been set
return rv;
}
static const std::bitset<128> forbidden = GetForbiddenSdpPayloadTypes();
if (msection.GetMediaType() == SdpMediaSection::kAudio ||
msection.GetMediaType() == SdpMediaSection::kVideo) {
@ -1350,6 +1345,9 @@ JsepSessionImpl::ParseSdp(const std::string& sdp, UniquePtr<Sdp>* parsedp)
}
}
nsresult rv = RemoveDuplicateTrackIds(parsed.get());
NS_ENSURE_SUCCESS(rv, rv);
*parsedp = Move(parsed);
return NS_OK;
}