Browse Source

Do not remove closed data channel from peer connection

Paul-Louis Ageneau 5 years ago
parent
commit
e5539c02fe
1 changed files with 5 additions and 5 deletions
  1. 5 5
      src/peerconnection.cpp

+ 5 - 5
src/peerconnection.cpp

@@ -415,10 +415,8 @@ shared_ptr<DataChannel> PeerConnection::findDataChannel(uint16_t stream) {
 	shared_ptr<DataChannel> channel;
 	shared_ptr<DataChannel> channel;
 	if (auto it = mDataChannels.find(stream); it != mDataChannels.end()) {
 	if (auto it = mDataChannels.find(stream); it != mDataChannels.end()) {
 		channel = it->second.lock();
 		channel = it->second.lock();
-		if (!channel || channel->isClosed()) {
+		if (!channel)
 			mDataChannels.erase(it);
 			mDataChannels.erase(it);
-			channel.reset();
-		}
 	}
 	}
 	return channel;
 	return channel;
 }
 }
@@ -429,11 +427,13 @@ void PeerConnection::iterateDataChannels(
 	auto it = mDataChannels.begin();
 	auto it = mDataChannels.begin();
 	while (it != mDataChannels.end()) {
 	while (it != mDataChannels.end()) {
 		auto channel = it->second.lock();
 		auto channel = it->second.lock();
-		if (!channel || channel->isClosed()) {
+		if (!channel) {
 			it = mDataChannels.erase(it);
 			it = mDataChannels.erase(it);
 			continue;
 			continue;
 		}
 		}
-		func(channel);
+		if (!channel->isClosed()) {
+			func(channel);
+		}
 		++it;
 		++it;
 	}
 	}
 }
 }