network: separate interface management from reconnection logic
This commit is contained in:
parent
4754241485
commit
c4d0314817
@ -290,9 +290,12 @@ class Network(threading.Thread):
|
|||||||
|
|
||||||
if self.proxy != proxy or self.protocol != protocol:
|
if self.proxy != proxy or self.protocol != protocol:
|
||||||
print_error('restarting network')
|
print_error('restarting network')
|
||||||
|
for i in self.interfaces.values():
|
||||||
|
i.stop()
|
||||||
|
self.interfaces.pop(i.server)
|
||||||
self.set_proxy(proxy)
|
self.set_proxy(proxy)
|
||||||
self.protocol = protocol
|
self.protocol = protocol
|
||||||
for i in self.interfaces.values(): i.stop()
|
self.disconnected_servers = set([])
|
||||||
if auto_connect:
|
if auto_connect:
|
||||||
#self.interface = None
|
#self.interface = None
|
||||||
return
|
return
|
||||||
@ -445,14 +448,22 @@ class Network(threading.Thread):
|
|||||||
except Queue.Empty:
|
except Queue.Empty:
|
||||||
if len(self.interfaces) + len(self.pending_servers) < self.num_server:
|
if len(self.interfaces) + len(self.pending_servers) < self.num_server:
|
||||||
self.start_random_interface()
|
self.start_random_interface()
|
||||||
if not self.interface.is_connected and self.default_server not in self.disconnected_servers:
|
|
||||||
print_error("forcing reconnection")
|
|
||||||
self.queue.put((self.interface, None))
|
|
||||||
if not self.interfaces:
|
if not self.interfaces:
|
||||||
if time.time() - disconnected_time > DISCONNECTED_RETRY_INTERVAL:
|
if time.time() - disconnected_time > DISCONNECTED_RETRY_INTERVAL:
|
||||||
print_error('network: retrying connections')
|
print_error('network: retrying connections')
|
||||||
self.disconnected_servers = set([])
|
self.disconnected_servers = set([])
|
||||||
disconnected_time = time.time()
|
disconnected_time = time.time()
|
||||||
|
if not self.interface.is_connected:
|
||||||
|
if self.config.get('auto_cycle'):
|
||||||
|
if self.interfaces:
|
||||||
|
self.switch_to_random_interface()
|
||||||
|
else:
|
||||||
|
if self.default_server in self.interfaces.keys():
|
||||||
|
self.switch_to_interface(self.interfaces[self.default_server])
|
||||||
|
else:
|
||||||
|
if self.default_server not in self.disconnected_servers and self.default_server not in self.pending_servers:
|
||||||
|
print_error("forcing reconnection")
|
||||||
|
self.interface = self.start_interface(self.default_server)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if response is not None:
|
if response is not None:
|
||||||
@ -478,16 +489,6 @@ class Network(threading.Thread):
|
|||||||
self.heights.pop(i.server)
|
self.heights.pop(i.server)
|
||||||
if i == self.interface:
|
if i == self.interface:
|
||||||
self.set_status('disconnected')
|
self.set_status('disconnected')
|
||||||
if self.config.get('auto_cycle'):
|
|
||||||
self.switch_to_random_interface()
|
|
||||||
else:
|
|
||||||
if self.default_server not in self.disconnected_servers:
|
|
||||||
print_error("restarting main interface")
|
|
||||||
if self.default_server in self.interfaces.keys():
|
|
||||||
self.switch_to_interface(self.interfaces[self.default_server])
|
|
||||||
else:
|
|
||||||
self.interface = self.start_interface(self.default_server)
|
|
||||||
# add it at the end
|
|
||||||
self.disconnected_servers.add(i.server)
|
self.disconnected_servers.add(i.server)
|
||||||
|
|
||||||
print_error("Network: Stopping interfaces")
|
print_error("Network: Stopping interfaces")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user