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) {