diff --git a/history.txt b/history.txt index d5f718e1ba..cffdb42d77 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,29 @@ +2020-11-16 zzz + * GeoIP 2020-11-01 + * I2NP: Don't extend DataStructureImpl, to save space + * Wrapper: Update to 3.5.44 + +2020-11-11 zzz + * Data: Store timestamps as longs, not Dates, to save space + * I2CP: Don't have I2CP Messages extend DataStructureImpl, to save space + +2020-11-10 zzz + * Data: SDS no longer extends DataStructureImpl to save space + * i2psnark: Larger read buffer for large files + * Ratchet: Destroy HandshakeState after fatal NS/NSR errors + +2020-11-07 zzz + * Tunnels: Simplify TunnelId and HopConfig to save space + +2020-11-05 zzz + * NetDB: Ensure RI republish time is less than validation time + +2020-11-04 zzz + * Util: ELiminate unneeded data copying in ByteArrayOutputStream + +2020-11-03 zzz + * i2ptunnel: Add checks for offline expiration of alternate destination + 2020-11-02 zzz * I2CP: Remove tunnels immediately on client disconnect * i2psnark: Limit max size of embedded video diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessage.java b/router/java/src/net/i2p/data/i2np/I2NPMessage.java index 291408e07a..a746624ebe 100644 --- a/router/java/src/net/i2p/data/i2np/I2NPMessage.java +++ b/router/java/src/net/i2p/data/i2np/I2NPMessage.java @@ -15,9 +15,11 @@ import net.i2p.data.DataStructure; /** * Base interface for all I2NP messages * + * Note: No longer extends DataStructure as of 0.9.48 + * * @author jrandom */ -public interface I2NPMessage extends DataStructure { +public interface I2NPMessage { /** 4 bytes unsigned */ public static final long MAX_ID_VALUE = (1l << 32) - 1l; @@ -102,6 +104,11 @@ public interface I2NPMessage extends DataStructure { /** How large the raw message is with the short 5 byte header */ public int getRawMessageSize(); + /** + * @since 0.9.48 from DataStructure + */ + public byte[] toByteArray(); + /** * Write the message to the buffer, returning the new offset (NOT the length). * the data is formatted so as to be self contained, with the type, size, diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java index 4fad056fe7..3dec8e04c3 100644 --- a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java +++ b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java @@ -25,9 +25,11 @@ import net.i2p.util.SimpleByteCache; /** * Defines the base message implementation. * + * Note: No longer extends DataStructureImpl as of 0.9.48 + * * @author jrandom */ -public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPMessage { +public abstract class I2NPMessageImpl implements I2NPMessage { protected final Log _log; protected final I2PAppContext _context; protected long _expiration; @@ -214,7 +216,6 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM return calculateWrittenLength()+5; } - @Override public byte[] toByteArray() { byte data[] = new byte[getMessageSize()]; int written = toByteArray(data); diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index e36cd3b143..59b43357e5 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,10 +18,10 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 12; + public final static long BUILD = 13; /** for example "-test" */ - public final static String EXTRA = ""; + public final static String EXTRA = "-rc"; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; public static void main(String args[]) { System.out.println("I2P Router version: " + FULL_VERSION); diff --git a/router/java/test/junit/net/i2p/data/i2np/DatabaseStoreMessageTest.java b/router/java/test/junit/net/i2p/data/i2np/DatabaseStoreMessageTest.java index 4b20ec061c..add6e2c7d5 100644 --- a/router/java/test/junit/net/i2p/data/i2np/DatabaseStoreMessageTest.java +++ b/router/java/test/junit/net/i2p/data/i2np/DatabaseStoreMessageTest.java @@ -17,6 +17,7 @@ import org.junit.rules.ExpectedException; import net.i2p.I2PAppContext; import net.i2p.data.DataFormatException; import net.i2p.data.DataStructure; +import net.i2p.data.Hash; import net.i2p.data.router.RouterInfo; import net.i2p.data.router.RouterInfoTest; import net.i2p.data.StructureTest; @@ -33,7 +34,7 @@ public class DatabaseStoreMessageTest extends StructureTest { public ExpectedException exception = ExpectedException.none(); public DataStructure createDataStructure() throws DataFormatException { - DatabaseStoreMessage msg = new DatabaseStoreMessage(I2PAppContext.getGlobalContext()); + DSMStructure msg = new DSMStructure(I2PAppContext.getGlobalContext()); RouterInfo info = (RouterInfo)new RouterInfoTest().createDataStructure(); msg.setMessageExpiration(Clock.getInstance().now()); msg.setUniqueId(666); @@ -42,7 +43,7 @@ public class DatabaseStoreMessageTest extends StructureTest { } public DataStructure createStructureToRead() { - return new DatabaseStoreMessage(I2PAppContext.getGlobalContext()); + return new DSMStructure(I2PAppContext.getGlobalContext()); } @Override @@ -51,4 +52,12 @@ public class DatabaseStoreMessageTest extends StructureTest { exception.expect(UnsupportedOperationException.class); super.testStructure(); } + + private static class DSMStructure extends DatabaseStoreMessage implements DataStructure { + public DSMStructure(I2PAppContext ctx) { super(ctx); } + public Hash calculateHash() { return null; } + public void fromByteArray(byte[] b) {} + public void fromBase64(String s) {} + public String toBase64() { return null; } + } }