Improve the check for returned bridges from CensorShip Circumvention, so that we iterate over potential groups of bridges and break on the first valid set

This commit is contained in:
Miguel Jacq 2025-02-18 17:19:44 +11:00
parent 035c398f82
commit 03515b6128
No known key found for this signature in database
GPG key ID: 59B3F0C24135C6A9

View file

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