Author: nextgens
Date: 2007-12-29 16:33:05 +0000 (Sat, 29 Dec 2007)
New Revision: 16842

Modified:
   trunk/freenet/src/freenet/node/FNPPacketMangler.java
Log:
JFK: refactor _fillJFKDHFIFO

Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java        2007-12-29 
14:34:50 UTC (rev 16841)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java        2007-12-29 
16:33:05 UTC (rev 16842)
@@ -2590,9 +2590,22 @@

        private void _fillJFKDHFIFO() {
                synchronized (dhContextFIFO) {
+                       if(dhContextFIFO.size() + 1 > DH_CONTEXT_BUFFER_SIZE) {
+                               DiffieHellmanLightContext result = null, tmp;
+                               long oldestSeen = Long.MAX_VALUE;
+
+                               Iterator it = dhContextFIFO.iterator();
+                               while(it.hasNext()) {
+                                       tmp = (DiffieHellmanLightContext) 
it.next();
+                                       if(tmp.lifetime < oldestSeen) {
+                                               oldestSeen = tmp.lifetime;
+                                               result = tmp;
+                                       }
+                               }
+                               dhContextFIFO.remove(dhContextToBePrunned = 
result);
+                       }
+                       
                        dhContextFIFO.addLast(_genLightDiffieHellmanContext());
-                       if(dhContextFIFO.size() > DH_CONTEXT_BUFFER_SIZE)
-                               dhContextFIFO.remove(findOldestContext());
                }
        }

@@ -2646,30 +2659,6 @@
                }
                return null;
        }
-       
-       /**
-        * Used to prune the oldest context
-        * That's O^(N)... but we have only a few elements.
-        * 
-        * @return the oldest DiffieHellmanLightContext
-        */
-       private DiffieHellmanLightContext findOldestContext() {
-               DiffieHellmanLightContext result = null, tmp;
-               long oldestSeen = Long.MAX_VALUE;
-               
-               synchronized (dhContextFIFO) {
-                       Iterator it = dhContextFIFO.iterator();
-                       while(it.hasNext()) {
-                               tmp = (DiffieHellmanLightContext) it.next();
-                               if(tmp.lifetime < oldestSeen) {
-                                       oldestSeen = tmp.lifetime;
-                                       result = tmp;
-                               }
-                       }
-                       dhContextToBePrunned = result;
-               }
-               return result;
-       }

        /*
         * Prepare DH parameters of message2 for them to be signed (useful in 
message3 to check the sig)


Reply via email to