Util: Hook in ByteArrayStream

Set accurate lengths for zero-copy
This commit is contained in:
zzz
2020-11-04 12:04:24 +00:00
parent 35da97936d
commit e242015145
25 changed files with 78 additions and 61 deletions

View File

@@ -1,7 +1,5 @@
package net.i2p.client.streaming.impl;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ConnectException;
@@ -38,6 +36,7 @@ import net.i2p.data.Hash;
import net.i2p.data.PrivateKey;
import net.i2p.data.PublicKey;
import net.i2p.data.SimpleDataStructure;
import net.i2p.util.ByteArrayStream;
import net.i2p.util.ConvertToHash;
import net.i2p.util.ConcurrentHashSet;
import net.i2p.util.Log;
@@ -275,7 +274,7 @@ public class I2PSocketManagerFull implements I2PSocketManager {
// We don't actually need the same pubkey in the dest, just in the LS.
// The dest one is unused. But this is how we find the LS keys
// to reuse in RequestLeaseSetMessageHandler.
ByteArrayOutputStream keyStream = new ByteArrayOutputStream(1024);
ByteArrayStream keyStream = new ByteArrayStream(1024);
try {
SigType type = getSigType(opts);
if (type != SigType.DSA_SHA1) {
@@ -299,7 +298,7 @@ public class I2PSocketManagerFull implements I2PSocketManager {
} catch (RuntimeException e) {
throw new I2PSessionException("Error creating keys", e);
}
privateKeyStream = new ByteArrayInputStream(keyStream.toByteArray());
privateKeyStream = keyStream.asInputStream();
}
I2PSession rv = _session.addSubsession(privateKeyStream, opts);
boolean added = _subsessions.add(rv);