Browse Source

Fixed generated application SDP entry with libnice

Paul-Louis Ageneau 4 years ago
parent
commit
686b8c3aa5
3 changed files with 9 additions and 0 deletions
  1. 1 0
      include/rtc/description.hpp
  2. 5 0
      src/description.cpp
  3. 3 0
      src/impl/peerconnection.cpp

+ 1 - 0
include/rtc/description.hpp

@@ -228,6 +228,7 @@ public:
 	int addApplication(string mid = "data");
 	int addApplication(string mid = "data");
 	int addVideo(string mid = "video", Direction dir = Direction::SendOnly);
 	int addVideo(string mid = "video", Direction dir = Direction::SendOnly);
 	int addAudio(string mid = "audio", Direction dir = Direction::SendOnly);
 	int addAudio(string mid = "audio", Direction dir = Direction::SendOnly);
+	void clearMedia();
 
 
 	variant<Media *, Application *> media(unsigned int index);
 	variant<Media *, Application *> media(unsigned int index);
 	variant<const Media *, const Application *> media(unsigned int index) const;
 	variant<const Media *, const Application *> media(unsigned int index) const;

+ 5 - 0
src/description.cpp

@@ -426,6 +426,11 @@ int Description::addAudio(string mid, Direction dir) {
 	return addMedia(Audio(std::move(mid), dir));
 	return addMedia(Audio(std::move(mid), dir));
 }
 }
 
 
+void Description::clearMedia() {
+	mEntries.clear();
+	mApplication.reset();
+}
+
 variant<Description::Media *, Description::Application *> Description::media(unsigned int index) {
 variant<Description::Media *, Description::Application *> Description::media(unsigned int index) {
 	if (index >= mEntries.size())
 	if (index >= mEntries.size())
 		throw std::out_of_range("Media index out of range");
 		throw std::out_of_range("Media index out of range");

+ 3 - 0
src/impl/peerconnection.cpp

@@ -732,6 +732,9 @@ void PeerConnection::processLocalDescription(Description description) {
 	const size_t localSctpPort = DEFAULT_SCTP_PORT;
 	const size_t localSctpPort = DEFAULT_SCTP_PORT;
 	const size_t localMaxMessageSize = config.maxMessageSize.value_or(DEFAULT_LOCAL_MAX_MESSAGE_SIZE);
 	const size_t localMaxMessageSize = config.maxMessageSize.value_or(DEFAULT_LOCAL_MAX_MESSAGE_SIZE);
 
 
+	// Clean up the application entry the ICE transport might have added already (libnice)
+	description.clearMedia();
+
 	if (auto remote = remoteDescription()) {
 	if (auto remote = remoteDescription()) {
 		// Reciprocate remote description
 		// Reciprocate remote description
 		for (unsigned int i = 0; i < remote->mediaCount(); ++i)
 		for (unsigned int i = 0; i < remote->mediaCount(); ++i)