diff --git a/src/communicator/__init__.py b/src/communicator/__init__.py index aa91747f..89700d58 100755 --- a/src/communicator/__init__.py +++ b/src/communicator/__init__.py @@ -52,7 +52,8 @@ config.reload() class OnionrCommunicatorDaemon: def __init__(self, shared_state, developmentMode=None): if developmentMode is None: - developmentMode = config.get('general.dev_mode', False) + developmentMode = config.get( + 'general.dev_mode', False) # configure logger and stuff self.config = config @@ -139,9 +140,7 @@ class OnionrCommunicatorDaemon: if config.get('transports.tor', True): # Timer to check for connectivity, # through Tor to various high-profile onion services - OnionrCommunicatorTimers( - self, netcheck.net_check, 500, - my_args=[self], max_threads=1) + add_onionr_thread(netcheck.net_check, [shared_state], 500, 60) # Announce the public API server transport address # to other nodes if security level allows diff --git a/src/communicatorutils/netcheck.py b/src/communicatorutils/netcheck.py index df3d8c0e..b45a4361 100755 --- a/src/communicatorutils/netcheck.py +++ b/src/communicatorutils/netcheck.py @@ -30,14 +30,16 @@ if TYPE_CHECKING: """ -def net_check(comm_inst): +def net_check(shared_state): """Check if we are connected to the internet. or not when we can't connect to any peers """ # for detecting if we have received incoming connections recently rec = False - kv: "DeadSimpleKV" = comm_inst.shared_state.get_by_string("DeadSimpleKV") + kv: "DeadSimpleKV" = shared_state.get_by_string("DeadSimpleKV") + proxy_port = shared_state.get_by_string("NetController").socksPort + if len(kv.get('onlinePeers')) == 0: try: if (epoch.get_epoch() - int(localcommand.local_command @@ -46,16 +48,17 @@ def net_check(comm_inst): rec = True except ValueError: pass - if not rec and not netutils.check_network(torPort=comm_inst.proxyPort): + if not rec and not netutils.check_network(torPort=proxy_port): if not kv.get('shutdown'): - if not comm_inst.config.get('general.offline_mode', False): + if not shared_state.get_by_string( + "OnionrCommunicatorDaemon").config.get( + 'general.offline_mode', False): logger.warn('Network check failed, are you connected to ' + 'the Internet, and is Tor working? ' + 'This is usually temporary, but bugs and censorship can cause this to persist, in which case you should report it to beardog [at] mailbox.org', # noqa terminal=True) - restarttor.restart(comm_inst.shared_state) + restarttor.restart(shared_state) kv.put('offlinePeers', []) kv.put('isOnline', False) else: kv.put('isOnline', True) - comm_inst.decrementThreadCount('net_check')