[tor-commits] [tor-browser] 27/33: fixup! fixup! Bug 40597: Implement TorSettings module
gitolite role
git at cupani.torproject.org
Tue May 3 22:40:35 UTC 2022
This is an automated email from the git hooks/post-receive script.
richard pushed a commit to branch tor-browser-91.9.0esr-11.5-1
in repository tor-browser.
commit 907f3ed2bddd0e7bb6648f667df0178adfe6443c
Author: Pier Angelo Vendrame <pierov at torproject.org>
AuthorDate: Thu Apr 14 18:49:50 2022 +0200
fixup! fixup! Bug 40597: Implement TorSettings module
Try to use the fallback settings if getting localized settings fails.
---
browser/modules/Moat.jsm | 21 +++++++++++++++++++++
browser/modules/TorConnect.jsm | 24 ++++++++++++++++++------
2 files changed, 39 insertions(+), 6 deletions(-)
diff --git a/browser/modules/Moat.jsm b/browser/modules/Moat.jsm
index bdcf6cb631561..35931172f3ee4 100644
--- a/browser/modules/Moat.jsm
+++ b/browser/modules/Moat.jsm
@@ -787,4 +787,25 @@ class MoatRPC {
return map;
}
+
+ // Request a copy of the defaul/fallback bridge settings, takes the following parameters:
+ // - transports: optional, an array of transports available to the client; if empty (or not
+ // given) returns settings using all working transports known to the server
+ //
+ // returns an array of settings objects in roughly the same format as the _settings
+ // object on the TorSettings module
+ async circumvention_defaults(transports) {
+ const args = {
+ transports: transports ? transports : [],
+ };
+ const response = await this._makeRequest("circumvention/defaults", args);
+ if ("errors" in response) {
+ const code = response.errors[0].code;
+ const detail = response.errors[0].detail;
+ throw new Error(`MoatRPC: ${detail} (${code})`);
+ } else if ("settings" in response) {
+ return this._fixupSettingsList(response.settings);
+ }
+ return [];
+ }
}
diff --git a/browser/modules/TorConnect.jsm b/browser/modules/TorConnect.jsm
index 6b501209d844e..59d59b70eaad8 100644
--- a/browser/modules/TorConnect.jsm
+++ b/browser/modules/TorConnect.jsm
@@ -496,12 +496,24 @@ const TorConnect = (() => {
if (this.transitioning) return;
- if (this.settings === null) {
- // unable to determine country
- throw_error(TorStrings.torConnect.autoBootstrappingFailed, TorStrings.torConnect.cannotDetermineCountry);
- } else if (this.settings.length === 0) {
- // no settings available for country
- throw_error(TorStrings.torConnect.autoBootstrappingFailed, TorStrings.torConnect.noSettingsForCountry);
+ const noCountry = this.settings !== null;
+ const noLocalizedSettings = this.settings && this.settings.length === 0;
+ if (noCountry || noLocalizedSettings) {
+ 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);
+ }
+ }
+ if (this.settings === null || this.settings.length === 0) {
+ // The fallback has failed as well, so throw the original error
+ if (noCountry) {
+ // unable to determine country
+ throw_error(TorStrings.torConnect.autoBootstrappingFailed, TorStrings.torConnect.cannotDetermineCountry);
+ } else {
+ // no settings available for country
+ throw_error(TorStrings.torConnect.autoBootstrappingFailed, TorStrings.torConnect.noSettingsForCountry);
+ }
}
// apply each of our settings and try to bootstrap with each
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the tor-commits
mailing list