commit b48d563eaa58b2c423b1eba09aa712787ba5a559 Author: Kathy Brade brade@pearlcrescent.com Date: Fri Apr 10 18:00:23 2015 -0400
Bug 15657: display host:port if HOSTADDR is provided by Tor.
If a Tor bootstrap status message contains a HOSTADDR value, include it within the error alert that we display. Also fix a problem where the progress dialog stayed open after an error occurred (even though an error alert was displayed as soon as the user clicked the "Cancel" button). --- src/chrome/content/progress.js | 13 ++++++++++--- src/components/tl-process.js | 7 ++++--- src/components/tl-protocol.js | 3 ++- src/modules/tl-util.jsm | 5 ++++- 4 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/src/chrome/content/progress.js b/src/chrome/content/progress.js index 30c4370..8208398 100644 --- a/src/chrome/content/progress.js +++ b/src/chrome/content/progress.js @@ -1,4 +1,4 @@ -// Copyright (c) 2014, The Tor Project, Inc. +// Copyright (c) 2015, The Tor Project, Inc. // See LICENSE for licensing information. // // vim: set sw=2 sts=2 ts=8 et syntax=javascript: @@ -9,6 +9,7 @@ const Cu = Components.utils;
const kTorProcessExitedTopic = "TorProcessExited"; const kBootstrapStatusTopic = "TorBootstrapStatus"; +const kTorBootstrapErrorTopic = "TorBootstrapError"; const kTorLogHasWarnOrErrTopic = "TorLogHasWarnOrErr";
Cu.import("resource://gre/modules/XPCOMUtils.jsm"); @@ -42,6 +43,7 @@ function initDialog() .getService(Ci.nsIObserverService); gObsSvc.addObserver(gObserver, kTorProcessExitedTopic, false); gObsSvc.addObserver(gObserver, kBootstrapStatusTopic, false); + gObsSvc.addObserver(gObserver, kTorBootstrapErrorTopic, false); gObsSvc.addObserver(gObserver, kTorLogHasWarnOrErrTopic, false); } catch (e) {} @@ -85,6 +87,7 @@ function cleanup() { gObsSvc.removeObserver(gObserver, kTorProcessExitedTopic); gObsSvc.removeObserver(gObserver, kBootstrapStatusTopic); + gObsSvc.removeObserver(gObserver, kTorBootstrapErrorTopic); gObsSvc.removeObserver(gObserver, kTorLogHasWarnOrErrTopic); } } @@ -132,10 +135,14 @@ var gObserver = { // nsIObserver implementation. observe: function(aSubject, aTopic, aParam) { - if (kTorProcessExitedTopic == aTopic) + if ((kTorProcessExitedTopic == aTopic) || + (kTorBootstrapErrorTopic == aTopic)) { + // In these cases, an error alert will be displayed elsewhere so it is + // best to close this window. // TODO: provide a way to access tor log e.g., leave this dialog open - // and display the open settings button. + // and display the open settings button or provide a way to do + // that from our error alerts. cleanup(); window.close(); } diff --git a/src/components/tl-process.js b/src/components/tl-process.js index b6dc98f..ef2b12c 100644 --- a/src/components/tl-process.js +++ b/src/components/tl-process.js @@ -1,4 +1,4 @@ -// Copyright (c) 2014, The Tor Project, Inc. +// Copyright (c) 2015, The Tor Project, Inc. // See LICENSE for licensing information. // // vim: set sw=2 sts=2 ts=8 et syntax=javascript: @@ -524,10 +524,11 @@ TorProcessService.prototype = this.mLastTorWarningPhase = aStatusObj.TAG; this.mLastTorWarningReason = aStatusObj.REASON;
+ // Notify others that an error will be displayed. + this.mObsSvc.notifyObservers(null, "TorBootstrapError", reason); + var msg = TorLauncherUtil.getLocalizedString("tor_bootstrap_failed"); TorLauncherUtil.showAlert(null, msg + "\n\n" + details); - - this.mObsSvc.notifyObservers(null, "TorBootstrapError", reason); } } } diff --git a/src/components/tl-protocol.js b/src/components/tl-protocol.js index 09ec468..559bb37 100644 --- a/src/components/tl-protocol.js +++ b/src/components/tl-protocol.js @@ -1,4 +1,4 @@ -// Copyright (c) 2014, The Tor Project, Inc. +// Copyright (c) 2015, The Tor Project, Inc. // See LICENSE for licensing information. // TODO: Some code came from torbutton.js (pull in copyright and license?) // @@ -310,6 +310,7 @@ TorProtocolService.prototype = // status.REASON -- string (optional) // status.COUNT -- integer (optional) // status.RECOMMENDATION -- string (optional) + // status.HOSTADDR -- string (optional) // A "TorBootstrapStatus" notification is also sent. // Returns null upon failure. _parseBootstrapStatus: function(aStatusMsg) diff --git a/src/modules/tl-util.jsm b/src/modules/tl-util.jsm index 834d260..ac680a8 100644 --- a/src/modules/tl-util.jsm +++ b/src/modules/tl-util.jsm @@ -1,4 +1,4 @@ -// Copyright (c) 2014, The Tor Project, Inc. +// Copyright (c) 2015, The Tor Project, Inc. // See LICENSE for licensing information. // // vim: set sw=2 sts=2 ts=8 et syntax=javascript: @@ -182,6 +182,9 @@ let TorLauncherUtil = // Public if (!result) result = fallbackStr;
+ if ((aKeyword == "REASON") && aStatusObj.HOSTADDR) + result += " - " + aStatusObj.HOSTADDR; + return (result) ? result : ""; },
tor-commits@lists.torproject.org