Bug 1437741 - Part 2: Map datachannel to an m-line after all RTP transceivers have been mapped. r?drno draft
authorByron Campen [:bwc] <docfaraday@gmail.com>
Thu, 15 Feb 2018 10:25:03 -0600
changeset 755859 ad3c52c64284abbacb4bbb1d2b20c361aedfbda3
parent 755858 b273c7bb771d6de4d3d12e6545060d3503d173f1
push id99306
push userbcampen@mozilla.com
push dateThu, 15 Feb 2018 21:38:14 +0000
reviewersdrno
bugs1437741
milestone60.0a1
Bug 1437741 - Part 2: Map datachannel to an m-line after all RTP transceivers have been mapped. r?drno MozReview-Commit-ID: 3hUvFaTYldx
media/webrtc/signaling/src/jsep/JsepSessionImpl.cpp
--- a/media/webrtc/signaling/src/jsep/JsepSessionImpl.cpp
+++ b/media/webrtc/signaling/src/jsep/JsepSessionImpl.cpp
@@ -1414,16 +1414,26 @@ JsepSessionImpl::GetTransceiverForLocal(
       }
     }
 
     return transceiver;
   }
 
   // There is no transceiver for |level| right now.
 
+  // Look for an RTP transceiver
+  for (RefPtr<JsepTransceiver>& transceiver : mTransceivers) {
+    if (transceiver->GetMediaType() != SdpMediaSection::kApplication &&
+        !transceiver->IsStopped() && !transceiver->HasLevel()) {
+      transceiver->SetLevel(level);
+      return transceiver.get();
+    }
+  }
+
+  // Ok, look for a datachannel
   for (RefPtr<JsepTransceiver>& transceiver : mTransceivers) {
     if (!transceiver->IsStopped() && !transceiver->HasLevel()) {
       transceiver->SetLevel(level);
       return transceiver.get();
     }
   }
 
   return nullptr;