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

Unified Diff: remoting/host/it2me/it2me_host.cc

Issue 2040353002: [Chromoting] Fix DCHECK when shutting down It2Me host from client side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resolve review comments Created 4 years, 6 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
« no previous file with comments | « remoting/host/it2me/it2me_host.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/it2me/it2me_host.cc
diff --git a/remoting/host/it2me/it2me_host.cc b/remoting/host/it2me/it2me_host.cc
index 0afaee6fc16d39d08523dec3c0784d66b83648a3..2b23c1bdd5609c7738390e2328681a68a80a5496 100644
--- a/remoting/host/it2me/it2me_host.cc
+++ b/remoting/host/it2me/it2me_host.cc
@@ -96,12 +96,18 @@ void It2MeHost::Connect() {
void It2MeHost::Disconnect() {
DCHECK(task_runner_->BelongsToCurrentThread());
host_context_->network_task_runner()->PostTask(
- FROM_HERE, base::Bind(&It2MeHost::Shutdown, this));
+ FROM_HERE, base::Bind(&It2MeHost::DisconnectOnNetworkThread, this));
}
-void It2MeHost::Shutdown() {
+void It2MeHost::DisconnectOnNetworkThread() {
DCHECK(host_context_->network_task_runner()->BelongsToCurrentThread());
+ // Disconnect() may be called even when after the host been already stopped.
+ // Ignore repeated calls.
+ if (state_ == kDisconnected) {
+ return;
+ }
+
confirmation_dialog_proxy_.reset();
host_event_logger_.reset();
@@ -164,7 +170,7 @@ void It2MeHost::OnConfirmationResult(It2MeConfirmationDialog::Result result) {
break;
case It2MeConfirmationDialog::Result::CANCEL:
- Shutdown();
+ DisconnectOnNetworkThread();
break;
default:
@@ -284,7 +290,7 @@ void It2MeHost::OnAccessDenied(const std::string& jid) {
++failed_login_attempts_;
if (failed_login_attempts_ == kMaxLoginAttempts) {
- Shutdown();
+ DisconnectOnNetworkThread();
}
}
@@ -313,7 +319,7 @@ void It2MeHost::OnClientConnected(const std::string& jid) {
void It2MeHost::OnClientDisconnected(const std::string& jid) {
DCHECK(host_context_->network_task_runner()->BelongsToCurrentThread());
- Shutdown();
+ DisconnectOnNetworkThread();
}
void It2MeHost::OnPolicyUpdate(
@@ -361,7 +367,7 @@ void It2MeHost::UpdateNatPolicy(bool nat_traversal_enabled) {
// When transitioning from enabled to disabled, force disconnect any
// existing session.
if (nat_traversal_enabled_ && !nat_traversal_enabled && IsConnected()) {
- Shutdown();
+ DisconnectOnNetworkThread();
}
nat_traversal_enabled_ = nat_traversal_enabled;
@@ -379,7 +385,7 @@ void It2MeHost::UpdateHostDomainPolicy(const std::string& host_domain) {
// When setting a host domain policy, force disconnect any existing session.
if (!host_domain.empty() && IsConnected()) {
- Shutdown();
+ DisconnectOnNetworkThread();
}
required_host_domain_ = host_domain;
@@ -392,7 +398,7 @@ void It2MeHost::UpdateClientDomainPolicy(const std::string& client_domain) {
// When setting a client domain policy, disconnect any existing session.
if (!client_domain.empty() && IsConnected()) {
- Shutdown();
+ DisconnectOnNetworkThread();
}
required_client_domain_ = client_domain;
@@ -462,7 +468,7 @@ void It2MeHost::OnReceivedSupportID(
if (!error_message.empty()) {
SetState(kError, error_message);
- Shutdown();
+ DisconnectOnNetworkThread();
return;
}
@@ -476,7 +482,7 @@ void It2MeHost::OnReceivedSupportID(
std::string error_message = "Failed to generate host certificate.";
LOG(ERROR) << error_message;
SetState(kError, error_message);
- Shutdown();
+ DisconnectOnNetworkThread();
return;
}
« no previous file with comments | « remoting/host/it2me/it2me_host.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698