Bug 1072388 - Part 2: Don't stomp level assignments on local offer rollback, since those are set by createOffer, not sLD. r=mjf

Depends on D26780

Differential Revision: https://phabricator.services.mozilla.com/D26781

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Byron Campen [:bwc] 2019-04-10 15:57:14 +00:00
parent a5a8793e9f
commit ad9aca54ac
2 changed files with 9 additions and 7 deletions

View File

@ -1553,7 +1553,7 @@ void JsepSessionImpl::RollbackLocalOffer() {
for (size_t i = 0; i < mTransceivers.size(); ++i) {
RefPtr<JsepTransceiver>& transceiver(mTransceivers[i]);
if (i < mOldTransceivers.size()) {
transceiver->Rollback(*mOldTransceivers[i]);
transceiver->Rollback(*mOldTransceivers[i], false);
continue;
}
@ -1561,7 +1561,7 @@ void JsepSessionImpl::RollbackLocalOffer() {
new JsepTransceiver(transceiver->GetMediaType()));
temp->mSendTrack.PopulateCodecs(mSupportedCodecs);
temp->mRecvTrack.PopulateCodecs(mSupportedCodecs);
transceiver->Rollback(*temp);
transceiver->Rollback(*temp, false);
}
mOldTransceivers.clear();
@ -1571,7 +1571,7 @@ void JsepSessionImpl::RollbackRemoteOffer() {
for (size_t i = 0; i < mTransceivers.size(); ++i) {
RefPtr<JsepTransceiver>& transceiver(mTransceivers[i]);
if (i < mOldTransceivers.size()) {
transceiver->Rollback(*mOldTransceivers[i]);
transceiver->Rollback(*mOldTransceivers[i], true);
continue;
}
@ -1585,7 +1585,7 @@ void JsepSessionImpl::RollbackRemoteOffer() {
new JsepTransceiver(transceiver->GetMediaType()));
temp->mSendTrack.PopulateCodecs(mSupportedCodecs);
temp->mRecvTrack.PopulateCodecs(mSupportedCodecs);
transceiver->Rollback(*temp);
transceiver->Rollback(*temp, true);
if (shouldRemove) {
transceiver->Stop();

View File

@ -55,13 +55,15 @@ class JsepTransceiver {
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(JsepTransceiver);
void Rollback(JsepTransceiver& oldTransceiver) {
void Rollback(JsepTransceiver& oldTransceiver, bool rollbackLevel) {
MOZ_ASSERT(oldTransceiver.GetMediaType() == GetMediaType());
MOZ_ASSERT(!oldTransceiver.IsNegotiated() || !oldTransceiver.HasLevel() ||
!HasLevel() || oldTransceiver.GetLevel() == GetLevel());
mTransport = oldTransceiver.mTransport;
mLevel = oldTransceiver.mLevel;
mBundleLevel = oldTransceiver.mBundleLevel;
if (rollbackLevel) {
mLevel = oldTransceiver.mLevel;
mBundleLevel = oldTransceiver.mBundleLevel;
}
mRecvTrack = oldTransceiver.mRecvTrack;
// stop() caused by a disabled m-section in a remote offer cannot be