Author: nextgens
Date: 2007-12-01 15:14:36 +0000 (Sat, 01 Dec 2007)
New Revision: 16182
Modified:
trunk/freenet/src/freenet/node/PeerNode.java
Log:
JFK: simplify|fix the logic of rekeying
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2007-12-01 14:50:20 UTC
(rev 16181)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2007-12-01 15:14:36 UTC
(rev 16182)
@@ -899,30 +899,33 @@
protected void maybeRekey() {
long now = System.currentTimeMillis();
- boolean hasRekeyed = false;
- if(hasLiveHandshake(now))
- return;
-
+ boolean shouldDisconnect = false;
+ boolean shouldReturn = false;
+ boolean shouldRekey = false;
long timeWhenRekeyingShouldOccur = 0;
- synchronized(this) {
- if(isRekeying || !isConnected)
- return;
+
+ synchronized (this) {
timeWhenRekeyingShouldOccur = timeLastRekeyed +
FNPPacketMangler.SESSION_KEY_REKEYING_INTERVAL;
- if((timeWhenRekeyingShouldOccur < now) ||
(totalBytesExchangedWithCurrentTracker >
FNPPacketMangler.AMOUNT_OF_BYTES_ALLOWED_BEFORE_WE_REKEY)) {
- hasRekeyed = true;
+ shouldDisconnect = (timeWhenRekeyingShouldOccur +
FNPPacketMangler.MAX_SESSION_KEY_REKEYING_DELAY < now) && isRekeying;
+ shouldReturn = isRekeying || !isConnected;
+ shouldRekey = (timeWhenRekeyingShouldOccur < now) ||
(totalBytesExchangedWithCurrentTracker >
FNPPacketMangler.AMOUNT_OF_BYTES_ALLOWED_BEFORE_WE_REKEY);
+ }
+
+ if(shouldDisconnect) {
+ String time =
TimeUtil.formatTime(FNPPacketMangler.MAX_SESSION_KEY_REKEYING_DELAY);
+ System.err.println("The peer (" + this + ") has been
asked to rekey " + time + " ago... force disconnect.");
+ Logger.error(this, "The peer (" + this + ") has been
asked to rekey " + time + " ago... force disconnect.");
+ forceDisconnect();
+ } else if (shouldReturn || hasLiveHandshake(now)) {
+ return;
+ } else if(shouldRekey) {
+ synchronized(this) {
isRekeying = true;
sendHandshakeTime = now; // Immediately
ctx = null;
}
+ Logger.normal(this, "We are asking for the key to be
renewed (" + this.detectedPeer + ')');
}
-
- 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 + ')');
}
/**