Merge pull request #1988 from onionshare/mig/fix_censorship_circumvention

Only set Censorship Circumvention bridges if we actually received some. Iterate over list until we find a valid set of bridges.
This commit is contained in:
Saptak Sengupta 2025-02-18 21:33:18 +05:30 committed by GitHub
commit fdd9053ea5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -238,21 +238,23 @@ class CensorshipCircumvention(object):
bridges_ok = False
self.settings = settings
# @TODO there might be several bridge types recommended.
# Should we attempt to iterate over each type if one of them fails to connect?
# But if so, how to stop it starting 3 separate Tor connection threads?
# for bridges in request_bridges["settings"]:
bridges = bridge_settings["settings"][0]["bridges"]
bridge_strings = bridges["bridge_strings"]
# We iterate over each group of bridges returned in settings.
# The first set of valid bridges are the ones we use.
if bridge_settings.get("settings", False):
for returned_bridge_settings in bridge_settings["settings"]:
if returned_bridge_settings.get("bridges", False):
bridges = returned_bridge_settings["bridges"]
bridge_strings = bridges["bridge_strings"]
self.settings.set("bridges_type", "custom")
self.settings.set("bridges_type", "custom")
# Sanity check the bridges provided from the Tor API before saving
bridges_checked = self.common.check_bridges_valid(bridge_strings)
# Sanity check the bridges provided from the Tor API before saving
bridges_checked = self.common.check_bridges_valid(bridge_strings)
if bridges_checked:
self.settings.set("bridges_custom", "\n".join(bridges_checked))
bridges_ok = True
if bridges_checked:
self.settings.set("bridges_custom", "\n".join(bridges_checked))
bridges_ok = True
break
# If we got any good bridges, save them to settings and return.
if bridges_ok: