Author: toad
Date: 2007-10-20 22:19:39 +0000 (Sat, 20 Oct 2007)
New Revision: 15463
Modified:
trunk/freenet/src/freenet/node/PeerNode.java
Log:
Prevent leak
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2007-10-20 20:15:49 UTC
(rev 15462)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2007-10-20 22:19:39 UTC
(rev 15463)
@@ -1316,6 +1316,10 @@
this.detectedPeer=newPeer;
this.lastAttemptedHandshakeIPUpdateTime = 0;
if(!isConnected) return;
+ // Prevent leak by clearing, *but keep the current
handshake*
+ Object o = jfkNoncesSent.get(newPeer);
+ jfkNoncesSent.clear();
+ jfkNoncesSent.put(newPeer, o);
} else return;
}
sendIPAddressMessage();
@@ -1817,6 +1821,9 @@
if(!Arrays.equals(oldPeers, nominalPeer.toArray(new
Peer[nominalPeer.size()]))) {
changedAnything = true;
lastAttemptedHandshakeIPUpdateTime = 0;
+ // Clear nonces to prevent leak. Will kill any in-progress
connect attempts, but that is okay because
+ // either we got an ARK which changed our peers list, or we
just connected.
+ jfkNoncesSent.clear();
}
// DO NOT change detectedPeer !!!