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

Unified Diff: remoting/host/plugin/daemon_controller_win.cc

Issue 10831037: Avoid potential conflicts leading to pending reboots while upgrading the me2me host: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 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/plugin/daemon_controller_win.cc
diff --git a/remoting/host/plugin/daemon_controller_win.cc b/remoting/host/plugin/daemon_controller_win.cc
index 2d8082c78c2bdf29482221a62428acbe0d31e023..29856529b2636b11dbc486e06e1f0a3444f6e3e7 100644
--- a/remoting/host/plugin/daemon_controller_win.cc
+++ b/remoting/host/plugin/daemon_controller_win.cc
@@ -51,8 +51,17 @@ const wchar_t kDaemonControllerElevationMoniker[] =
// Name of the Daemon Controller's worker thread.
const char kDaemonControllerThreadName[] = "Daemon Controller thread";
-// The maximum interval between showing UAC prompts.
-const int kUacTimeoutSec = 15 * 60;
+// The maximum duration of keeping a reference to a privileged instance of
+// the Daemon Controller. This effectively reduces number of UAC prompts a user
+// sees.
+const int kPrivilegedTimeoutSec = 5 * 60;
+
+// The maximum duration of keeping a reference to an unprivileged instance of
+// the Daemon Controller. This interval should not be too long. If upgrade
+// happens while there is a live reference to a Daemon Controller instance
+// the old binary still can be used. So dropping the references often makes sure
+// that the old binary will go away sooner.
+const int kUnprivilegedTimeoutSec = 60;
Jamie 2012/07/26 19:40:59 Why keep a reference at all? Could we do this by s
alexeypa (please no reviews) 2012/07/26 20:37:27 It is an optimization t avoid launching a process
// A base::Thread implementation that initializes COM on the new thread.
class ComThread : public base::Thread {
@@ -296,6 +305,13 @@ HRESULT DaemonControllerWin::ActivateController() {
// Ignore the error. IID_IDaemonControl2 is optional.
control_.QueryInterface(IID_IDaemonControl2, control2_.ReceiveVoid());
+
+ // Release |control_| upon expiration of the timeout.
+ release_timer_.reset(new base::OneShotTimer<DaemonControllerWin>());
+ release_timer_->Start(FROM_HERE,
+ base::TimeDelta::FromSeconds(kUnprivilegedTimeoutSec),
+ this,
+ &DaemonControllerWin::ReleaseController);
}
return S_OK;
@@ -339,7 +355,7 @@ HRESULT DaemonControllerWin::ActivateElevatedController() {
// Release |control_| upon expiration of the timeout.
release_timer_.reset(new base::OneShotTimer<DaemonControllerWin>());
release_timer_->Start(FROM_HERE,
- base::TimeDelta::FromSeconds(kUacTimeoutSec),
+ base::TimeDelta::FromSeconds(kPrivilegedTimeoutSec),
this,
&DaemonControllerWin::ReleaseController);
}
« remoting/host/installer/chromoting.wxs ('K') | « remoting/host/installer/chromoting.wxs ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698