Browse Source

network: add method init_parameters_from_config

master
SomberNight 3 years ago
parent
commit
d46d23b103
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 54
      electrum/network.py

54
electrum/network.py

@ -294,18 +294,7 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
self._allowed_protocols = {PREFERRED_NETWORK_PROTOCOL}
# Server for addresses and transactions
self.default_server = self.config.get('server', None)
# Sanitize default server
if self.default_server:
try:
self.default_server = ServerAddr.from_str(self.default_server)
except:
self.logger.warning('failed to parse server-string; 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}"
self._init_parameters_from_config()
self.taskgroup = None
@ -337,11 +326,6 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
self.interfaces = {} # these are the ifaces in "initialised and usable" state
self._closing_ifaces = set()
self.auto_connect = self.config.get('auto_connect', True)
self.proxy = None
self.tor_proxy = False
self._maybe_set_oneserver()
# Dump network messages (all interfaces). Set at runtime from the console.
self.debug = False
@ -509,6 +493,12 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
auto_connect=self.auto_connect,
oneserver=self.oneserver)
def _init_parameters_from_config(self) -> None:
self.auto_connect = self.config.get('auto_connect', True)
self._set_default_server()
self._set_proxy(deserialize_proxy(self.config.get('proxy')))
self._maybe_set_oneserver()
def get_donation_address(self):
if self.is_connected():
return self.donation_address
@ -603,6 +593,20 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
return server
return None
def _set_default_server(self) -> None:
# Server for addresses and transactions
server = self.config.get('server', None)
# Sanitize default server
if server:
try:
self.default_server = ServerAddr.from_str(server)
except:
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)
assert isinstance(self.default_server, ServerAddr), f"invalid type for default_server: {self.default_server!r}"
def _set_proxy(self, proxy: Optional[dict]):
self.proxy = proxy
dns_hacks.configure_dns_depending_on_proxy(bool(proxy))
@ -639,14 +643,17 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
or self.config.get('oneserver') != net_params.oneserver:
return
proxy_changed = self.proxy != proxy
oneserver_changed = self.oneserver != net_params.oneserver
default_server_changed = self.default_server != server
self._init_parameters_from_config()
async with self.restart_lock:
self.auto_connect = net_params.auto_connect
if self.proxy != proxy or self.oneserver != net_params.oneserver:
# Restart the network defaulting to the given server
if proxy_changed or oneserver_changed:
# Restart the network
await self.stop(full_shutdown=False)
self.default_server = server
await self._start()
elif self.default_server != server:
elif default_server_changed:
await self.switch_to_interface(server)
else:
await self.switch_lagging_interface()
@ -1236,8 +1243,7 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
assert not self._closing_ifaces
self.logger.info('starting network')
self._clear_addr_retry_times()
self._set_proxy(deserialize_proxy(self.config.get('proxy')))
self._maybe_set_oneserver()
self._init_parameters_from_config()
await self.taskgroup.spawn(self._run_new_interface(self.default_server))
async def main():

Loading…
Cancel
Save