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

@ -8,7 +8,6 @@ package net.i2p.router.message;
*
*/
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.HashSet;
@ -37,6 +36,7 @@ import net.i2p.router.crypto.ratchet.MuxedSKM;
import net.i2p.router.crypto.ratchet.RatchetSKM;
import net.i2p.router.crypto.ratchet.RatchetSessionTag;
import net.i2p.router.crypto.ratchet.ReplyCallback;
import net.i2p.util.ByteArrayStream;
import net.i2p.util.Log;
/**
@ -393,11 +393,11 @@ public class GarlicMessageBuilder {
* @throws IllegalArgumentException on error
*/
private static byte[] buildCloveSet(RouterContext ctx, GarlicConfig config) {
ByteArrayOutputStream baos;
ByteArrayStream baos;
try {
if (config instanceof PayloadGarlicConfig) {
byte clove[] = buildClove(ctx, (PayloadGarlicConfig)config);
baos = new ByteArrayOutputStream(clove.length + 16);
baos = new ByteArrayStream(1 + clove.length + 3 + 4 + 8);
baos.write((byte) 1);
baos.write(clove);
} else {
@ -417,7 +417,7 @@ public class GarlicMessageBuilder {
int len = 1;
for (int i = 0; i < cloves.length; i++)
len += cloves[i].length;
baos = new ByteArrayOutputStream(len + 16);
baos = new ByteArrayStream(1 + len + 3 + 4 + 8);
baos.write((byte) cloves.length);
for (int i = 0; i < cloves.length; i++)
baos.write(cloves[i]);

View File

@ -33,6 +33,7 @@ import net.i2p.router.RouterContext;
import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
import net.i2p.router.transport.crypto.DHSessionKeyBuilder;
import static net.i2p.router.transport.ntcp.OutboundNTCP2State.*;
import net.i2p.util.ByteArrayStream;
import net.i2p.util.ByteCache;
import net.i2p.util.Log;
import net.i2p.util.SimpleByteCache;
@ -456,7 +457,7 @@ class InboundEstablishState extends EstablishBase implements NTCP2Payload.Payloa
long rtt = now - _con.getCreated();
_peerSkew = (now - (tsA * 1000) - (rtt / 2) + 500) / 1000;
ByteArrayOutputStream baos = new ByteArrayOutputStream(768);
ByteArrayStream baos = new ByteArrayStream(256 + 256 + 32 + 4 + 4);
baos.write(_X);
baos.write(_Y);
baos.write(_context.routerHash().getData());