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

Unified Diff: remoting/host/remoting_me2me_host.cc

Issue 10831184: Fix Me2Me host to properly reload config when it changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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: remoting/host/remoting_me2me_host.cc
diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc
index 3f90b65ddcef0c03d0de8bc2864c0f21974aa3ec..658d8b5d705545c8e075af61252089c59b9a7d2a 100644
--- a/remoting/host/remoting_me2me_host.cc
+++ b/remoting/host/remoting_me2me_host.cc
@@ -116,24 +116,19 @@ class HostProcess
FilePath default_config_dir = remoting::GetConfigDir();
if (cmd_line->HasSwitch(kAuthConfigSwitchName)) {
FilePath path = cmd_line->GetSwitchValuePath(kAuthConfigSwitchName);
- if (!config_.AddConfigPath(path)) {
- return false;
- }
+ config_.AddConfigPath(path);
}
host_config_path_ = default_config_dir.Append(kDefaultHostConfigFile);
if (cmd_line->HasSwitch(kHostConfigSwitchName)) {
host_config_path_ = cmd_line->GetSwitchValuePath(kHostConfigSwitchName);
}
- if (!config_.AddConfigPath(host_config_path_)) {
- return false;
- }
+ config_.AddConfigPath(host_config_path_);
return true;
simonmorris 2012/08/07 01:03:02 true -> LoadConfig() ?
Sergey Ulanov 2012/08/07 01:22:43 Run() will call LoadConfig() - don't think we need
simonmorris 2012/08/07 15:48:59 OK.
}
void ConfigUpdated() {
- // The timer should be set and cleaned up on the same thread.
DCHECK(message_loop_.message_loop_proxy()->BelongsToCurrentThread());
// Call ConfigUpdatedDelayed after a short delay, so that this object won't
@@ -145,7 +140,10 @@ class HostProcess
}
void ConfigUpdatedDelayed() {
+ DCHECK(message_loop_.message_loop_proxy()->BelongsToCurrentThread());
+
if (LoadConfig()) {
+ // PostTask to create new authenticator factory in case PIN has changed.
context_->network_task_runner()->PostTask(
FROM_HERE,
base::Bind(&HostProcess::CreateAuthenticatorFactory,
@@ -197,6 +195,7 @@ class HostProcess
}
void CreateAuthenticatorFactory() {
+ DCHECK(context_->network_task_runner()->BelongsToCurrentThread());
scoped_ptr<protocol::AuthenticatorFactory> factory(
new protocol::Me2MeHostAuthenticatorFactory(
key_pair_.GenerateCertificate(),
@@ -251,6 +250,17 @@ class HostProcess
// Read host config, returning true if successful.
bool LoadConfig() {
+ DCHECK(message_loop_.message_loop_proxy()->BelongsToCurrentThread());
+
+ // TODO(sergeyu): There is a potential race condition: this function is
+ // called on the main thread while the class members it mutates are used on
+ // the network thread. Fix it. http://crbug.com/140986 .
+
+ if (!config_.Read()) {
+ LOG(ERROR) << "Failed to read config file.";
+ return false;
+ }
+
if (!config_.GetString(kHostIdConfigPath, &host_id_)) {
LOG(ERROR) << "host_id is not defined in the config.";
return false;
« remoting/host/composite_host_config.h ('K') | « remoting/host/composite_host_config.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698