Author: kryptos
Date: 2007-08-27 20:31:03 +0000 (Mon, 27 Aug 2007)
New Revision: 14891
Modified:
branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java
Log:
Minor changes in JFK cache
Modified: branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java
===================================================================
--- branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java 2007-08-27
17:01:55 UTC (rev 14890)
+++ branches/freenet-jfk/src/freenet/node/FNPPacketMangler.java 2007-08-27
20:31:03 UTC (rev 14891)
@@ -7,6 +7,7 @@
import freenet.io.comm.SocketHandler;
import java.security.MessageDigest;
import java.util.Arrays;
+import java.util.Collections;
import net.i2p.util.NativeBigInteger;
import freenet.crypt.BlockCipher;
import freenet.crypt.DSASignature;
@@ -36,7 +37,7 @@
import freenet.support.WouldBlockException;
import java.util.Map;
import java.util.HashMap;
-import java.util.*;
+import java.util.concurrent.*;
/**
* @author amphibian
@@ -56,8 +57,8 @@
final PacketSocketHandler sock;
final EntropySource fnpTimingSource;
final EntropySource myPacketDataSource;
- final HashMap message3Cache;
- final HashMap message4Cache;
+ final Map message3Cache;
+ final Map message4Cache;
private static final int MAX_PACKETS_IN_FLIGHT = 256;
private static final int RANDOM_BYTES_LENGTH = 12;
@@ -92,8 +93,8 @@
this.sock = sock;
fnpTimingSource = new EntropySource();
myPacketDataSource = new EntropySource();
- message3Cache = new HashMap();
- message4Cache = new HashMap();
+ message3Cache = Collections.synchronizedMap(new HashMap());
+ message4Cache = Collections.synchronizedMap(new HashMap());
fullHeadersLengthMinimum = HEADERS_LENGTH_MINIMUM +
sock.getHeadersLength();
fullHeadersLengthOneMessage = HEADERS_LENGTH_ONE_MESSAGE +
sock.getHeadersLength();
logMINOR = Logger.shouldLog(Logger.MINOR, this);
@@ -674,12 +675,11 @@
//All recent messages 3 and 4 are cached
if(phase==2){
message3Cache.put(cacheKey,data);
- for (Iterator
i=message3Cache.keySet().iterator();i.hasNext();){
- //if duplicate message3; send corresponding message4
-
if(data.toString().equalsIgnoreCase(i.next().toString())){
- sendMessage4Packet(1,2,3,data,pn,replyTo);
- return true;
- }
+ //if duplicate message3; send corresponding message4
+
if(data.toString().equalsIgnoreCase(message3Cache.get(cacheKey).toString())){
+ sendMessage4Packet(1,2,3,data,pn,replyTo);
+ return true;
+
}
}
else if(phase==3){