From 70fd33e5879c0848354d47bf50d673b70865fad8 Mon Sep 17 00:00:00 2001
From: shortcutme <tamas@zeronet.io>
Date: Thu, 8 Feb 2018 17:58:44 +0100
Subject: [PATCH] Message from local peer does not means internet connection

---
 src/Connection/Connection.py       | 7 ++++++-
 src/Connection/ConnectionServer.py | 6 ++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

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