network: add oneserver/auto_connect both enabled checks, avoid connecting to random/multiple servers
if oneserver is enabled.
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user