diff --git a/src/Connection/Connection.py b/src/Connection/Connection.py index 9e3690d3..3986f604 100644 --- a/src/Connection/Connection.py +++ b/src/Connection/Connection.py @@ -19,7 +19,7 @@ from util import helper class Connection(object): __slots__ = ( "sock", "sock_wrapped", "ip", "port", "cert_pin", "target_onion", "id", "protocol", "type", "server", "unpacker", "req_id", - "handshake", "crypt", "connected", "event_connected", "closed", "start_time", "last_recv_time", + "handshake", "crypt", "connected", "event_connected", "closed", "start_time", "last_recv_time", "is_private_ip", "last_message_time", "last_send_time", "last_sent_time", "incomplete_buff_recv", "bytes_recv", "bytes_sent", "cpu_time", "send_lock", "last_ping_delay", "last_req_time", "last_cmd_sent", "last_cmd_recv", "bad_actions", "sites", "name", "updateName", "waiting_requests", "waiting_streams" ) @@ -37,6 +37,11 @@ class Connection(object): self.protocol = "?" self.type = "?" + if helper.isPrivateIp(self.ip) and self.ip not in config.ip_local: + self.is_private_ip = True + else: + self.is_private_ip = False + self.server = server self.unpacker = None # Stream incoming socket messages here self.req_id = 0 # Last request id diff --git a/src/Connection/ConnectionServer.py b/src/Connection/ConnectionServer.py index 4e59a682..c7993447 100644 --- a/src/Connection/ConnectionServer.py +++ b/src/Connection/ConnectionServer.py @@ -18,7 +18,7 @@ from Tor import TorManager from Site import SiteManager -class ConnectionServer: +class ConnectionServer(object): def __init__(self, ip=None, port=None, request_handler=None): self.ip = ip self.port = port @@ -198,7 +198,9 @@ class ConnectionServer: timeout_multipler = 1 idle = time.time() - max(connection.last_recv_time, connection.start_time, connection.last_message_time) - last_message_time = max(last_message_time, connection.last_message_time) + if connection.last_message_time > last_message_time and not connection.is_private_ip: + # Message from local IPs does not means internet connection + last_message_time = connection.last_message_time if connection.unpacker and idle > 30: # Delete the unpacker if not needed