[tor-commits] [tor-browser] 52/85: fixup! Bug 40597: Implement TorSettings module

gitolite role git at cupani.torproject.org
Fri Jun 10 17:01:43 UTC 2022


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 at 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;
         },

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tor-commits mailing list