Author: kryptos
Date: 2007-08-30 19:41:26 +0000 (Thu, 30 Aug 2007)
New Revision: 14929

Modified:
   branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java
Log:
Cache objects synced and some comments added

Modified: branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java
===================================================================
--- branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java 2007-08-30 
18:50:11 UTC (rev 14928)
+++ branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java 2007-08-30 
19:41:26 UTC (rev 14929)
@@ -64,6 +64,14 @@
     final PacketSocketHandler sock;
     final EntropySource fnpTimingSource;
     final EntropySource myPacketDataSource;
+    /*
+     * Objects cached during JFK message exchange: Message3,Message4 and 
authenticator
+     * The messages are cached in hashmaps because the message retrieval from 
the cache 
+     * can be performed in constant time( given the key)
+     * For the authenticator we used a arrayList. This is a better option when 
we just have 
+     * to insert into the end of the list and perform a simple 'get'. Usage of 
a linkedList 
+     * could prove to be much slower due to the allocation time for each node 
in the list.
+     */
     final Map message3Cache;
     final Map message4Cache;
     final List authenticatorCache;
@@ -576,7 +584,10 @@
         // It is basically a keyed hash(HMAC); size of output is that of the 
underlying hash function 
         byte[] authenticator = new byte[16];
         try{
-            authenticator = 
getBytes(authenticatorCache.get(authenticatorCache.size()));
+            // Intrinsic lock provided by the object authenticatorCache
+            synchronized(authenticatorCache){
+                authenticator = 
getBytes(authenticatorCache.get(authenticatorCache.size()));
+            }
         }
         catch(IOException e){
             Logger.error(this,"Error getting bytes");
@@ -774,7 +785,7 @@
                 if(phase==2){
                     // Intrinsic lock provided by the object message3Cache
                     synchronized(message3Cache) {
-                    result = message3Cache.get(cacheKey);
+                        result = message3Cache.get(cacheKey);
                     }
                     if(result != null) {
                         synchronized(message3Cache) {
@@ -806,8 +817,7 @@
                 try
                 {
                         sendPacket(output,replyTo,pn,0);
-                }catch(LocalAddressException e)
-                {
+                }catch(LocalAddressException e) {
                         Logger.error(this, "Tried to send auth packet to local 
address: "+replyTo+" for "+pn.getPeer());
                 }



Reply via email to