Author: nextgens
Date: 2007-11-29 14:53:53 +0000 (Thu, 29 Nov 2007)
New Revision: 16083
Modified:
trunk/freenet/src/freenet/node/FNPPacketMangler.java
trunk/freenet/src/freenet/node/PeerNode.java
Log:
JFK: force disconnect from a peer if it hasn't rekeyed 5mins after we asked it
to
Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-11-29
14:34:11 UTC (rev 16082)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-11-29
14:53:53 UTC (rev 16083)
@@ -105,6 +105,8 @@
public static final int TRANSIENT_KEY_REKEYING_MIN_INTERVAL =
30*60*1000;
/** The rekeying interval for the session key (keytrackers) */
public static final int SESSION_KEY_REKEYING_INTERVAL = 60*60*1000;
+ /** The max amount of time we will accept to use the current tracker
when it should have been replaced */
+ public static final int MAX_SESSION_KEY_REKEYING_DELAY = 5*60*1000;
/** The amount of data sent before we ask for a rekey */
public static final int AMOUNT_OF_BYTES_ALLOWED_BEFORE_WE_REKEY = 1024
* 1024 * 1024;
/** The Runnable in charge of rekeying on a regular basis */
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2007-11-29 14:34:11 UTC
(rev 16082)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2007-11-29 14:53:53 UTC
(rev 16083)
@@ -61,6 +61,7 @@
import freenet.support.Logger;
import freenet.support.ShortBuffer;
import freenet.support.SimpleFieldSet;
+import freenet.support.TimeUtil;
import freenet.support.WouldBlockException;
import freenet.support.math.RunningAverage;
import freenet.support.math.SimpleRunningAverage;
@@ -968,10 +969,16 @@
if(hasLiveHandshake(now)) return;
synchronized (this) {
if(isRekeying || !isConnected) return;
- if((timeLastRekeyed +
FNPPacketMangler.SESSION_KEY_REKEYING_INTERVAL < now) ||
(totalBytesExchangedWithCurrentTracker >
FNPPacketMangler.AMOUNT_OF_BYTES_ALLOWED_BEFORE_WE_REKEY)) {
+ long timeWhenRekeyingShouldOccur = timeLastRekeyed +
FNPPacketMangler.SESSION_KEY_REKEYING_INTERVAL;
+ if((timeWhenRekeyingShouldOccur < now) ||
(totalBytesExchangedWithCurrentTracker >
FNPPacketMangler.AMOUNT_OF_BYTES_ALLOWED_BEFORE_WE_REKEY)) {
hasRekeyed = true;
isRekeying = true;
}
+
+ if(timeWhenRekeyingShouldOccur +
FNPPacketMangler.MAX_SESSION_KEY_REKEYING_DELAY < now) {
+ Logger.error(this, "The peer ("+this+") has been asked to
rekey "+TimeUtil.formatTime(FNPPacketMangler.MAX_SESSION_KEY_REKEYING_DELAY)+"
ago... force disconnect.");
+ forceDisconnect();
+ }
}
if(hasRekeyed)
Logger.normal(this, "We are asking for the key to be renewed
("+this.detectedPeer+')');