Author: toad
Date: 2007-11-28 15:18:11 +0000 (Wed, 28 Nov 2007)
New Revision: 16013

Modified:
   trunk/freenet/src/freenet/io/AddressTrackerItem.java
Log:
assume the firewall/NAT takes into account received packets to keep tunnels 
open as well as sent ones: it's a reliability/security tradeoff, some firewalls 
will go for reliability rather than security

Modified: trunk/freenet/src/freenet/io/AddressTrackerItem.java
===================================================================
--- trunk/freenet/src/freenet/io/AddressTrackerItem.java        2007-11-28 
15:14:43 UTC (rev 16012)
+++ trunk/freenet/src/freenet/io/AddressTrackerItem.java        2007-11-28 
15:18:11 UTC (rev 16013)
@@ -51,6 +51,7 @@
        private long[] gapLengths;
        private long[] gapLengthRecvTimes;
        static final int GAP_THRESHOLD = AddressTracker.MAX_TUNNEL_LENGTH;
+       static final boolean INCLUDE_RECEIVED_PACKETS = true;

        public AddressTrackerItem(long timeDefinitelyNoPacketsReceived, long 
timeDefinitelyNoPacketsSent) {
                timeFirstReceivedPacket = -1;
@@ -99,9 +100,17 @@
                packetsReceived++;
                if(timeFirstReceivedPacket < 0)
                        timeFirstReceivedPacket = now;
+               long oldTimeLastReceivedPacket = timeLastReceivedPacket;
                timeLastReceivedPacket = now;
                // Establish the interval
                long startTime;
+               startTime = timeLastSentPacket;
+               startTime = Math.max(startTime, timeDefinitelyNoPacketsSent);
+               if(INCLUDE_RECEIVED_PACKETS) {
+                       startTime = Math.max(startTime, 
oldTimeLastReceivedPacket);
+                       startTime = Math.max(startTime, 
timeDefinitelyNoPacketsReceived);
+               }
+               if(startTime <= 0) return; // No information
                if(timeLastSentPacket > 0) startTime = timeLastSentPacket;
                else startTime = timeDefinitelyNoPacketsSent;
                if(now - startTime > GAP_THRESHOLD) {


Reply via email to