This is an automated email from the git hooks/post-receive script.
pierov pushed a commit to branch tor-browser-91.9.0esr-11.5-2 in repository tor-browser.
commit a001d0e89b94f5aaeb72b33c0dd9e2e76bcbbd8b Author: Pier Angelo Vendrame pierov@torproject.org AuthorDate: Tue May 17 16:38:11 2022 +0200
fixup! Bug 40597: Implement TorSettings module
Fixes for bugs found in 91.9, to keep as a fixup also in 91.10.
Bug 40923: Make available the country code detected by Moat --- browser/modules/Moat.jsm | 9 ++++++--- browser/modules/TorConnect.jsm | 24 ++++++++++++++++++------ 2 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/browser/modules/Moat.jsm b/browser/modules/Moat.jsm index 35931172f3ee4..90a6ae4e521cc 100644 --- a/browser/modules/Moat.jsm +++ b/browser/modules/Moat.jsm @@ -735,6 +735,7 @@ class MoatRPC { country, }; const response = await this._makeRequest("circumvention/settings", args); + let settings = {}; if ("errors" in response) { const code = response.errors[0].code; const detail = response.errors[0].detail; @@ -748,10 +749,12 @@ class MoatRPC {
throw new Error(`MoatRPC: ${detail} (${code})`); } else if ("settings" in response) { - return this._fixupSettingsList(response.settings); + settings.settings = this._fixupSettingsList(response.settings); } - - return []; + if ("country" in response) { + settings.country = response.country; + } + return settings; }
// Request a list of country codes with available censorship circumvention settings diff --git a/browser/modules/TorConnect.jsm b/browser/modules/TorConnect.jsm index 711134326a14d..0edbb7d70c47f 100644 --- a/browser/modules/TorConnect.jsm +++ b/browser/modules/TorConnect.jsm @@ -317,6 +317,7 @@ const TorConnect = (() => { } return codesNames; })()), + _detectedLocation: "", _errorMessage: null, _errorDetails: null, _logHasWarningOrError: false, @@ -380,6 +381,10 @@ const TorConnect = (() => { }; await debug_sleep(1500); TorConnect._hasBootstrapEverFailed = true; + if (Services.prefs.getIntPref(TorConnectPrefs.censorship_level, 0) === 2) { + const codes = Object.keys(TorConnect._countryNames); + TorConnect._detectedLocation = codes[Math.floor(Math.random() * codes.length)]; + } TorConnect._changeState(TorConnectState.Error, "Bootstrap failed (for debugging purposes)", "Error: Censorship simulation", true); TorProtocolService._torBootstrapDebugSetError(); return; @@ -489,22 +494,25 @@ const TorConnect = (() => {
if (this.transitioning) return;
- this.settings = await this.mrpc.circumvention_settings([...TorBuiltinBridgeTypes, "vanilla"], countryCode); + const settings = await this.mrpc.circumvention_settings([...TorBuiltinBridgeTypes, "vanilla"], countryCode);
if (this.transitioning) return;
- const noCountry = this.settings !== null; - const noLocalizedSettings = this.settings && this.settings.length === 0; - if (noCountry || noLocalizedSettings) { + if (settings?.country) { + TorConnect._detectedLocation = settings.country; + } + if (settings?.settings && settings.settings.length > 0) { + this.settings = settings.settings; + } else { try { this.settings = await this.mrpc.circumvention_defaults([...TorBuiltinBridgeTypes, "vanilla"]); } catch (err) { - console.error("We could not get localized settings, but defaults settings failed as well", err); + console.error("We did not get localized settings, and default settings failed as well", err); } } if (this.settings === null || this.settings.length === 0) { // The fallback has failed as well, so throw the original error - if (noCountry) { + if (!TorConnect._detectedLocation) { // unable to determine country throw_error(TorStrings.torConnect.autoBootstrappingFailed, TorStrings.torConnect.cannotDetermineCountry); } else { @@ -750,6 +758,10 @@ const TorConnect = (() => { return this._countryNames; },
+ get detectedLocation() { + return this._detectedLocation; + }, + get errorMessage() { return this._errorMessage; },