* Data Structures:
- New SDSCache for SimpleDataStructures - New SimpleByteCache for byte[] - Cache Hash, PublicKey, and SigningPublicKey - Remove global lock in ByteCache
This commit is contained in:
@ -93,9 +93,10 @@ public class BuildRequestRecord {
|
||||
* the gateway to which the reply should be sent.
|
||||
*/
|
||||
public Hash readNextIdentity() {
|
||||
byte rv[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(_data.getData(), _data.getOffset() + OFF_SEND_IDENT, rv, 0, Hash.HASH_LENGTH);
|
||||
return new Hash(rv);
|
||||
//byte rv[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(_data.getData(), _data.getOffset() + OFF_SEND_IDENT, rv, 0, Hash.HASH_LENGTH);
|
||||
//return new Hash(rv);
|
||||
return Hash.create(_data.getData(), _data.getOffset() + OFF_SEND_IDENT);
|
||||
}
|
||||
/**
|
||||
* Tunnel layer encryption key that the current hop should use
|
||||
|
@ -133,15 +133,17 @@ public class DatabaseLookupMessage extends I2NPMessageImpl {
|
||||
if (type != MESSAGE_TYPE) throw new I2NPMessageException("Message type is incorrect for this message");
|
||||
int curIndex = offset;
|
||||
|
||||
byte keyData[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
|
||||
//byte keyData[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
|
||||
_key = Hash.create(data, curIndex);
|
||||
curIndex += Hash.HASH_LENGTH;
|
||||
_key = new Hash(keyData);
|
||||
//_key = new Hash(keyData);
|
||||
|
||||
byte fromData[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(data, curIndex, fromData, 0, Hash.HASH_LENGTH);
|
||||
//byte fromData[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(data, curIndex, fromData, 0, Hash.HASH_LENGTH);
|
||||
_fromHash = Hash.create(data, curIndex);
|
||||
curIndex += Hash.HASH_LENGTH;
|
||||
_fromHash = new Hash(fromData);
|
||||
//_fromHash = new Hash(fromData);
|
||||
|
||||
boolean tunnelSpecified = false;
|
||||
switch (data[curIndex]) {
|
||||
@ -168,10 +170,11 @@ public class DatabaseLookupMessage extends I2NPMessageImpl {
|
||||
throw new I2NPMessageException("Invalid number of peers - " + numPeers);
|
||||
Set<Hash> peers = new HashSet(numPeers);
|
||||
for (int i = 0; i < numPeers; i++) {
|
||||
byte peer[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(data, curIndex, peer, 0, Hash.HASH_LENGTH);
|
||||
//byte peer[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(data, curIndex, peer, 0, Hash.HASH_LENGTH);
|
||||
Hash p = Hash.create(data, curIndex);
|
||||
curIndex += Hash.HASH_LENGTH;
|
||||
peers.add(new Hash(peer));
|
||||
peers.add(p);
|
||||
}
|
||||
_dontIncludePeers = peers;
|
||||
}
|
||||
|
@ -55,26 +55,29 @@ public class DatabaseSearchReplyMessage extends I2NPMessageImpl {
|
||||
if (type != MESSAGE_TYPE) throw new I2NPMessageException("Message type is incorrect for this message");
|
||||
int curIndex = offset;
|
||||
|
||||
byte keyData[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
|
||||
//byte keyData[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
|
||||
_key = Hash.create(data, curIndex);
|
||||
curIndex += Hash.HASH_LENGTH;
|
||||
_key = new Hash(keyData);
|
||||
//_key = new Hash(keyData);
|
||||
|
||||
int num = (int)DataHelper.fromLong(data, curIndex, 1);
|
||||
curIndex++;
|
||||
|
||||
_peerHashes.clear();
|
||||
for (int i = 0; i < num; i++) {
|
||||
byte peer[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(data, curIndex, peer, 0, Hash.HASH_LENGTH);
|
||||
//byte peer[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(data, curIndex, peer, 0, Hash.HASH_LENGTH);
|
||||
Hash p = Hash.create(data, curIndex);
|
||||
curIndex += Hash.HASH_LENGTH;
|
||||
addReply(new Hash(peer));
|
||||
addReply(p);
|
||||
}
|
||||
|
||||
byte from[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(data, curIndex, from, 0, Hash.HASH_LENGTH);
|
||||
//byte from[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(data, curIndex, from, 0, Hash.HASH_LENGTH);
|
||||
_from = Hash.create(data, curIndex);
|
||||
curIndex += Hash.HASH_LENGTH;
|
||||
_from = new Hash(from);
|
||||
//_from = new Hash(from);
|
||||
|
||||
//_context.statManager().addRateData("netDb.searchReplyMessageReceive", num*32 + 64, 1);
|
||||
}
|
||||
|
@ -113,10 +113,11 @@ public class DatabaseStoreMessage extends I2NPMessageImpl {
|
||||
if (type != MESSAGE_TYPE) throw new I2NPMessageException("Message type is incorrect for this message");
|
||||
int curIndex = offset;
|
||||
|
||||
byte keyData[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
|
||||
//byte keyData[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
|
||||
_key = Hash.create(data, curIndex);
|
||||
curIndex += Hash.HASH_LENGTH;
|
||||
_key = new Hash(keyData);
|
||||
//_key = new Hash(keyData);
|
||||
|
||||
_type = (int)DataHelper.fromLong(data, curIndex, 1);
|
||||
curIndex++;
|
||||
@ -130,10 +131,11 @@ public class DatabaseStoreMessage extends I2NPMessageImpl {
|
||||
_replyTunnel = new TunnelId(tunnel);
|
||||
curIndex += 4;
|
||||
|
||||
byte gw[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(data, curIndex, gw, 0, Hash.HASH_LENGTH);
|
||||
//byte gw[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(data, curIndex, gw, 0, Hash.HASH_LENGTH);
|
||||
_replyGateway = Hash.create(data, curIndex);
|
||||
curIndex += Hash.HASH_LENGTH;
|
||||
_replyGateway = new Hash(gw);
|
||||
//_replyGateway = new Hash(gw);
|
||||
} else {
|
||||
_replyTunnel = null;
|
||||
_replyGateway = null;
|
||||
|
@ -90,18 +90,21 @@ public class DeliveryInstructions extends DataStructureImpl {
|
||||
case FLAG_MODE_LOCAL:
|
||||
break;
|
||||
case FLAG_MODE_DESTINATION:
|
||||
Hash destHash = new Hash();
|
||||
destHash.readBytes(in);
|
||||
//Hash destHash = new Hash();
|
||||
//destHash.readBytes(in);
|
||||
Hash destHash = Hash.create(in);
|
||||
setDestination(destHash);
|
||||
break;
|
||||
case FLAG_MODE_ROUTER:
|
||||
Hash routerHash = new Hash();
|
||||
routerHash.readBytes(in);
|
||||
//Hash routerHash = new Hash();
|
||||
//routerHash.readBytes(in);
|
||||
Hash routerHash = Hash.create(in);
|
||||
setRouter(routerHash);
|
||||
break;
|
||||
case FLAG_MODE_TUNNEL:
|
||||
Hash tunnelRouterHash = new Hash();
|
||||
tunnelRouterHash.readBytes(in);
|
||||
//Hash tunnelRouterHash = new Hash();
|
||||
//tunnelRouterHash.readBytes(in);
|
||||
Hash tunnelRouterHash = Hash.create(in);
|
||||
setRouter(tunnelRouterHash);
|
||||
TunnelId id = new TunnelId();
|
||||
id.readBytes(in);
|
||||
@ -140,22 +143,25 @@ public class DeliveryInstructions extends DataStructureImpl {
|
||||
case FLAG_MODE_LOCAL:
|
||||
break;
|
||||
case FLAG_MODE_DESTINATION:
|
||||
byte destHash[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(data, cur, destHash, 0, Hash.HASH_LENGTH);
|
||||
//byte destHash[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(data, cur, destHash, 0, Hash.HASH_LENGTH);
|
||||
Hash dh = Hash.create(data, cur);
|
||||
cur += Hash.HASH_LENGTH;
|
||||
setDestination(new Hash(destHash));
|
||||
setDestination(dh);
|
||||
break;
|
||||
case FLAG_MODE_ROUTER:
|
||||
byte routerHash[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(data, cur, routerHash, 0, Hash.HASH_LENGTH);
|
||||
//byte routerHash[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(data, cur, routerHash, 0, Hash.HASH_LENGTH);
|
||||
Hash rh = Hash.create(data, cur);
|
||||
cur += Hash.HASH_LENGTH;
|
||||
setRouter(new Hash(routerHash));
|
||||
setRouter(rh);
|
||||
break;
|
||||
case FLAG_MODE_TUNNEL:
|
||||
byte tunnelRouterHash[] = new byte[Hash.HASH_LENGTH];
|
||||
System.arraycopy(data, cur, tunnelRouterHash, 0, Hash.HASH_LENGTH);
|
||||
//byte tunnelRouterHash[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(data, cur, tunnelRouterHash, 0, Hash.HASH_LENGTH);
|
||||
Hash trh = Hash.create(data, cur);
|
||||
cur += Hash.HASH_LENGTH;
|
||||
setRouter(new Hash(tunnelRouterHash));
|
||||
setRouter(trh);
|
||||
setTunnelId(new TunnelId(DataHelper.fromLong(data, cur, 4)));
|
||||
cur += 4;
|
||||
break;
|
||||
|
@ -13,6 +13,7 @@ import java.util.Set;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
import net.i2p.data.Base64;
|
||||
import net.i2p.data.DataFormatException;
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.data.Hash;
|
||||
@ -290,15 +291,19 @@ class ProfilePersistenceHelper {
|
||||
_log.warn("Error loading properties from " + file.getName(), ioe);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private Hash getHash(String name) {
|
||||
String key = name.substring("profile-".length());
|
||||
key = key.substring(0, key.length() - ".dat".length());
|
||||
Hash h = new Hash();
|
||||
//Hash h = new Hash();
|
||||
try {
|
||||
h.fromBase64(key);
|
||||
//h.fromBase64(key);
|
||||
byte[] b = Base64.decode(key);
|
||||
if (b == null)
|
||||
return null;
|
||||
Hash h = Hash.create(b);
|
||||
return h;
|
||||
} catch (DataFormatException dfe) {
|
||||
} catch (Exception dfe) {
|
||||
_log.warn("Invalid base64 [" + key + "]", dfe);
|
||||
return null;
|
||||
}
|
||||
|
@ -327,11 +327,12 @@ public class FragmentHandler {
|
||||
offset += 4;
|
||||
}
|
||||
if ( (type == TYPE_ROUTER) || (type == TYPE_TUNNEL) ) {
|
||||
byte h[] = new byte[Hash.HASH_LENGTH];
|
||||
if (offset + Hash.HASH_LENGTH >= preprocessed.length)
|
||||
return -1;
|
||||
System.arraycopy(preprocessed, offset, h, 0, Hash.HASH_LENGTH);
|
||||
router = new Hash(h);
|
||||
//byte h[] = new byte[Hash.HASH_LENGTH];
|
||||
//System.arraycopy(preprocessed, offset, h, 0, Hash.HASH_LENGTH);
|
||||
//router = new Hash(h);
|
||||
router = Hash.create(preprocessed, offset);
|
||||
offset += Hash.HASH_LENGTH;
|
||||
}
|
||||
if (fragmented) {
|
||||
|
Reference in New Issue
Block a user