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 !!!


Reply via email to