Author: nextgens
Date: 2007-10-06 18:05:48 +0000 (Sat, 06 Oct 2007)
New Revision: 15435

Modified:
   trunk/freenet/src/freenet/node/FNPPacketMangler.java
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
Move jfkNoncesSent to FNPPacketMangler to spare some memory; add a comment on 
what it does; synchronize access (maybe overkill... tell me if it is)

Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java        2007-10-06 
17:56:02 UTC (rev 15434)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java        2007-10-06 
18:05:48 UTC (rev 15435)
@@ -122,6 +122,11 @@

        final int fullHeadersLengthMinimum;
        final int fullHeadersLengthOneMessage;
+       /**
+        *  The initiator has to ensure that nonces send back by the
+        *  responder in message2 match what was chosen in message 1
+        */
+       protected final HashMap jfkNoncesSent = new HashMap();


        public FNPPacketMangler(Node node, NodeCrypto crypt, 
PacketSocketHandler sock) {
@@ -512,7 +517,9 @@
                byte[] nonce = new byte[NONCE_SIZE];
                node.random.nextBytes(nonce);

-               pn.jfkNonceInitiator.put(replyTo, nonce);
+               synchronized (jfkNoncesSent) {
+                       jfkNoncesSent.put(replyTo, nonce);
+               }

                byte[] message1 = new 
byte[NONCE_SIZE+DiffieHellman.modulusLengthInBytes()];

@@ -648,7 +655,10 @@
                }

                // sanity check
-               byte[] myNi = (byte[]) pn.jfkNonceInitiator.get(replyTo);
+               byte[] myNi = null;
+               synchronized (jfkNoncesSent) {
+                       myNi = (byte[]) jfkNoncesSent.get(replyTo);
+               }
                // We don't except such a message;
                if(myNi == null) {
                        Logger.normal(this, "We received an unexpected JFK(3) 
message from "+pn);
@@ -973,7 +983,9 @@
                pn.jfkKa = null;
                pn.jfkKe = null;
                pn.jfkKs = null;
-               pn.jfkNonceInitiator.clear();
+               synchronized (jfkNoncesSent) {
+                       jfkNoncesSent.remove(pn);
+               }

                final long t2=System.currentTimeMillis();
                if((t2-t1)>500)

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2007-10-06 17:56:02 UTC 
(rev 15434)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2007-10-06 18:05:48 UTC 
(rev 15435)
@@ -11,7 +11,6 @@
 import java.net.MalformedURLException;
 import java.net.UnknownHostException;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -95,7 +94,6 @@
     protected byte[] jfkKa;
     protected byte[] jfkKe;
     protected byte[] jfkKs;
-    protected final HashMap jfkNonceInitiator = new HashMap();
     protected byte[] jfkMyRef;

     /** My low-level address for SocketManager purposes */


Reply via email to