1
0

network: add oneserver/auto_connect both enabled checks, avoid connecting to random/multiple servers

if oneserver is enabled.
This commit is contained in:
Sander van Grieken
2024-10-11 10:35:46 +02:00
parent 1dfe2ccec0
commit 82e3932aaf
2 changed files with 13 additions and 3 deletions

View File

@@ -601,6 +601,13 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
def _init_parameters_from_config(self) -> None:
dns_hacks.configure_dns_resolver()
self.auto_connect = self.config.NETWORK_AUTO_CONNECT
if self.auto_connect and self.config.NETWORK_ONESERVER:
# enabling both oneserver and auto_connect doesn't really make sense
# assume oneserver is enabled for privacy reasons, disable auto_connect and assume server is unpredictable
self.logger.warning(f'both "oneserver" and "auto_connect" options enabled, disabling "auto_connect" and resetting "server".')
self.config.NETWORK_SERVER = "" # let _set_default_server set harmless default (localhost)
self.auto_connect = False
self._set_default_server()
self._set_proxy(ProxySettings.from_config(self.config))
self._maybe_set_oneserver()
@@ -722,7 +729,12 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
self.logger.warning(f'failed to parse server-string ({server!r}); falling back to localhost:1:s.')
self.default_server = ServerAddr.from_str("localhost:1:s")
else:
self.default_server = pick_random_server(allowed_protocols=self._allowed_protocols)
# if oneserver is enabled but no server specified then don't pick a random server
if self.config.NETWORK_ONESERVER:
self.logger.warning(f'"oneserver" option enabled, but no "server" defined; falling back to localhost:1:s.')
self.default_server = ServerAddr.from_str("localhost:1:s")
else:
self.default_server = pick_random_server(allowed_protocols=self._allowed_protocols)
assert isinstance(self.default_server, ServerAddr), f"invalid type for default_server: {self.default_server!r}"
def _set_proxy(self, proxy: ProxySettings):

View File

@@ -753,8 +753,6 @@ class ServerConnectWizard(AbstractWizard):
raise Exception('failed to parse server %s' % wizard_data['server'])
except Exception:
return
else:
oneserver = False
net_params = net_params._replace(server=server, auto_connect=wizard_data['autoconnect'], oneserver=oneserver)
self._daemon.network.run_from_another_thread(self._daemon.network.set_parameters(net_params))