| Index: webrtc/base/network.cc
|
| diff --git a/webrtc/base/network.cc b/webrtc/base/network.cc
|
| index 488c475137a2ee8d7ddbea1fa2ace59175cc3f36..9f888cca15f65d8f31e5fa3f264dd6c4418dbbf1 100644
|
| --- a/webrtc/base/network.cc
|
| +++ b/webrtc/base/network.cc
|
| @@ -371,6 +371,12 @@ BasicNetworkManager::BasicNetworkManager()
|
| }
|
|
|
| BasicNetworkManager::~BasicNetworkManager() {
|
| + if (thread_ && network_monitor_ &&
|
| + thread_->socketserver()->network_binder() == network_monitor_.get()) {
|
| + // In case that network binder is still being used by the socket server
|
| + // after it is released here.
|
| + thread_->socketserver()->set_network_binder(nullptr);
|
| + }
|
| }
|
|
|
| void BasicNetworkManager::OnNetworksChanged() {
|
| @@ -731,10 +737,13 @@ void BasicNetworkManager::StartNetworkMonitor() {
|
| if (factory == nullptr) {
|
| return;
|
| }
|
| - network_monitor_.reset(factory->CreateNetworkMonitor());
|
| if (!network_monitor_) {
|
| - return;
|
| + network_monitor_.reset(factory->CreateNetworkMonitor());
|
| + ASSERT(network_monitor_);
|
| + ASSERT(thread_ && thread_->socketserver());
|
| + thread_->socketserver()->set_network_binder(network_monitor_.get());
|
| }
|
| +
|
| network_monitor_->SignalNetworksChanged.connect(
|
| this, &BasicNetworkManager::OnNetworksChanged);
|
| network_monitor_->Start();
|
| @@ -745,7 +754,6 @@ void BasicNetworkManager::StopNetworkMonitor() {
|
| return;
|
| }
|
| network_monitor_->Stop();
|
| - network_monitor_.reset();
|
| }
|
|
|
| void BasicNetworkManager::OnMessage(Message* msg) {
|
|
|