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)