commit ce36cfd72d78422148bead146aecfa452a1b9c90 Author: Tails developers amnesia@boum.org Date: Mon Feb 17 20:20:28 2014 +0100
Split Tor process starting code from control code.
This separation is useful for supporting configuration of already started, system-wide Tor instances. --- src/chrome/locale/en/torlauncher.properties | 1 + src/components/tl-process.js | 26 +++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/src/chrome/locale/en/torlauncher.properties b/src/chrome/locale/en/torlauncher.properties index bd8646e..3d5ee3f 100644 --- a/src/chrome/locale/en/torlauncher.properties +++ b/src/chrome/locale/en/torlauncher.properties @@ -7,6 +7,7 @@ torlauncher.tor_exited=Tor unexpectedly exited. torlauncher.please_restart_app=Please restart this application. torlauncher.tor_controlconn_failed=Could not connect to Tor control port. torlauncher.tor_failed_to_start=Tor failed to start. +torlauncher.tor_control_failed=Failed to take control of Tor. torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection. torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
diff --git a/src/components/tl-process.js b/src/components/tl-process.js index f97fa59..b542fc4 100644 --- a/src/components/tl-process.js +++ b/src/components/tl-process.js @@ -90,7 +90,10 @@ TorProcessService.prototype = this.mObsSvc.addObserver(this, kBootstrapStatusTopic, false);
if (TorLauncherUtil.shouldStartAndOwnTor) + { this._startTor(); + this._controlTor(); + } } else if ("quit-application-granted" == aTopic) { @@ -340,7 +343,24 @@ TorProcessService.prototype = p.runwAsync(args, args.length, this, false); this.mTorProcess = p; this.mTorProcessStartTime = Date.now(); + } + catch (e) + { + this.mTorProcessStatus = this.kStatusExited; + var s = TorLauncherUtil.getLocalizedString("tor_failed_to_start"); + TorLauncherUtil.showAlert(null, s); + TorLauncherLogger.safelog(4, "_startTor error: ", e); + } + }, // _startTor() + + + _controlTor: function() + { + var isInitialBootstrap = + TorLauncherUtil.getBoolPref(this.kPrefPromptAtStartup);
+ try + { this._monitorTorProcessStartup();
if (isInitialBootstrap) @@ -378,11 +398,11 @@ TorProcessService.prototype = catch (e) { this.mTorProcessStatus = this.kStatusExited; - var s = TorLauncherUtil.getLocalizedString("tor_failed_to_start"); + var s = TorLauncherUtil.getLocalizedString("tor_control_failed"); TorLauncherUtil.showAlert(null, s); - TorLauncherLogger.safelog(4, "_startTor error: ", e); + TorLauncherLogger.safelog(4, "_controlTor error: ", e); } - }, // _startTor() + }, // controlTor()
_monitorTorProcessStartup: function() {