Bug 1176415: stop adding ssrc's to data channel m-sections. r?bwc draft
authorNils Ohlmeier [:drno] <drno@ohlmeier.org>
Wed, 31 May 2017 22:13:04 -0700
changeset 587809 3ab7f781be7ff5fa7568890d82242e88cd7dfc5f
parent 587256 94906c37940c6b1c371dc7c22ed2098face96d8b
child 587810 1349aa8befed873e65495eb4f4a548482440c840
push id61817
push userdrno@ohlmeier.org
push dateThu, 01 Jun 2017 18:38:42 +0000
reviewersbwc
bugs1176415
milestone55.0a1
Bug 1176415: stop adding ssrc's to data channel m-sections. r?bwc MozReview-Commit-ID: H7tiJ9YRThQ
media/webrtc/signaling/src/jsep/JsepSessionImpl.cpp
media/webrtc/signaling/src/jsep/JsepTrack.h
--- a/media/webrtc/signaling/src/jsep/JsepSessionImpl.cpp
+++ b/media/webrtc/signaling/src/jsep/JsepSessionImpl.cpp
@@ -1017,16 +1017,20 @@ JsepSessionImpl::CreateAnswerMSection(co
   }
 
   return NS_OK;
 }
 
 nsresult
 JsepSessionImpl::SetRecvonlySsrc(SdpMediaSection* msection)
 {
+  if (msection->GetMediaType() == SdpMediaSection::kApplication) {
+    return NS_OK;
+  }
+
   // If previous m-sections are disabled, we do not call this function for them
   while (mRecvonlySsrcs.size() <= msection->GetLevel()) {
     uint32_t ssrc;
     nsresult rv = CreateSsrc(&ssrc);
     NS_ENSURE_SUCCESS(rv, rv);
     mRecvonlySsrcs.push_back(ssrc);
   }
 
@@ -1466,19 +1470,21 @@ JsepSessionImpl::MakeNegotiatedTrackPair
   MOZ_MTLOG(ML_DEBUG, "Negotiated m= line"
                           << " index=" << local.GetLevel()
                           << " type=" << local.GetMediaType()
                           << " sending=" << sending
                           << " receiving=" << receiving);
 
   trackPairOut->mLevel = local.GetLevel();
 
-  MOZ_ASSERT(mRecvonlySsrcs.size() > local.GetLevel(),
-             "Failed to set the default ssrc for an active m-section");
-  trackPairOut->mRecvonlySsrc = mRecvonlySsrcs[local.GetLevel()];
+  if (local.GetMediaType() != SdpMediaSection::kApplication) {
+    MOZ_ASSERT(mRecvonlySsrcs.size() > local.GetLevel(),
+               "Failed to set the default ssrc for an active m-section");
+    trackPairOut->mRecvonlySsrc = mRecvonlySsrcs[local.GetLevel()];
+  }
 
   if (usingBundle) {
     trackPairOut->SetBundleLevel(transportLevel);
   }
 
   auto sendTrack = FindTrackByLevel(mLocalTracks, local.GetLevel());
   if (sendTrack != mLocalTracks.end()) {
     sendTrack->mTrack->Negotiate(answer, remote);
--- a/media/webrtc/signaling/src/jsep/JsepTrack.h
+++ b/media/webrtc/signaling/src/jsep/JsepTrack.h
@@ -150,17 +150,19 @@ public:
   GetSsrcs() const
   {
     return mSsrcs;
   }
 
   virtual void
   AddSsrc(uint32_t ssrc)
   {
-    mSsrcs.push_back(ssrc);
+    if (mType != SdpMediaSection::kApplication) {
+      mSsrcs.push_back(ssrc);
+    }
   }
 
   bool
   GetActive() const
   {
     return mActive;
   }