Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Unified Diff: webrtc/api/peerconnection.cc

Issue 1956453003: Relanding: Implement RTCConfiguration.iceCandidatePoolSize. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/api/peerconnection.cc
diff --git a/webrtc/api/peerconnection.cc b/webrtc/api/peerconnection.cc
index 7f1f4523781685f062bfa0f7e8b639fd1cc1b8d4..21b37859105de73c0538f8e8c275e8d65481fa3f 100644
--- a/webrtc/api/peerconnection.cc
+++ b/webrtc/api/peerconnection.cc
@@ -522,6 +522,14 @@ PeerConnection::~PeerConnection() {
for (const auto& receiver : receivers_) {
receiver->Stop();
}
+ // Destroy stats_ because it depends on session_.
+ stats_.reset(nullptr);
+ // Now destroy session_ before destroying other members,
+ // because its destruction fires signals (such as VoiceChannelDestroyed)
+ // which will trigger some final actions in PeerConnection...
+ session_.reset(nullptr);
+ // port_allocator_ lives on the worker thread and should be destroyed there.
+ worker_thread()->Invoke<void>([this] { port_allocator_.reset(nullptr); });
}
bool PeerConnection::Initialize(
@@ -543,7 +551,9 @@ bool PeerConnection::Initialize(
if (!ParseIceServers(configuration.servers, &stun_servers, &turn_servers)) {
return false;
}
- port_allocator_->SetIceServers(stun_servers, turn_servers);
+ worker_thread()->Invoke<void>(rtc::Bind(
+ &cricket::PortAllocator::SetConfiguration, port_allocator_.get(),
pthatcher1 2016/05/05 21:51:24 I'm a little confused. Some things on PortAllocat
Taylor Brandstetter 2016/05/06 03:53:34 That's the way it's always been. I agree it should
+ stun_servers, turn_servers, configuration.ice_candidate_pool_size));
// To handle both internal and externally created port allocator, we will
// enable BUNDLE here.
@@ -1144,18 +1154,20 @@ void PeerConnection::SetRemoteDescription(
signaling_thread()->Post(this, MSG_SET_SESSIONDESCRIPTION_SUCCESS, msg);
}
-bool PeerConnection::SetConfiguration(const RTCConfiguration& config) {
+bool PeerConnection::SetConfiguration(const RTCConfiguration& configuration) {
TRACE_EVENT0("webrtc", "PeerConnection::SetConfiguration");
if (port_allocator_) {
cricket::ServerAddresses stun_servers;
std::vector<cricket::RelayServerConfig> turn_servers;
- if (!ParseIceServers(config.servers, &stun_servers, &turn_servers)) {
+ if (!ParseIceServers(configuration.servers, &stun_servers, &turn_servers)) {
return false;
}
- port_allocator_->SetIceServers(stun_servers, turn_servers);
+ worker_thread()->Invoke<void>(rtc::Bind(
+ &cricket::PortAllocator::SetConfiguration, port_allocator_.get(),
+ stun_servers, turn_servers, configuration.ice_candidate_pool_size));
}
- session_->SetIceConfig(session_->ParseIceConfig(config));
- return session_->SetIceTransports(config.type);
+ session_->SetIceConfig(session_->ParseIceConfig(configuration));
+ return session_->SetIceTransports(configuration.type);
}
bool PeerConnection::AddIceCandidate(

Powered by Google App Engine
This is Rietveld 408576698