- Fix failsafe shutdown hook broken in 0.8.8;
HUP, INT, and TERM signals should now shut down cleanly.
- Shutdown hook no longer prevents other hooks from running
- Trap HUP, if router.gracefulHUP=true, and do graceful shutdown.
Only under wrapper, non-Windows.
- i2prouter stop now uses SIGTERM
- Implement i2prouter graceful using SIGHUP (ticket #580)
- Configure wrapper to ignore SIGUSR1 and SIGUSR2 as they will shut down
or crash the JVM
- Remove synchronization
- Do not allow contents to change after being set, throw IllegalStateException
- Do not copy contents out in getters
- Make options final
- Add getOption() and getOptionsMap() methods
for ease in building multiple routers in the JVM,
and also because starting threads in a constructor is bad practice.
All threads now start in runRouter().
Installation of updates now only happens via Router.main().
- Payloads an exact multiple of 512 bytes failed to decompress
- Data at the end of the stream could be lost
- read() returned -1 when the data was 0xff
- Deprecate unused stream methods and I2NPMessageReader since
all transports provide encapsulation.
- Don't throw IOE from byte array methods
- Use cached null cert in GarlicClove
- Add method to limit size of buffer to read
- Don't check checksum at input, in most cases
- Reuse checksum at output, for unomodified pass-through messages
(but recalculating it now and logging on a mismatch for testing)
- Fix DatabaseLookupMessage to internally store the don't include peers as
a List, not a Set, so it doesn't get reordered and break the checksum
- Log cleanup
* NTCP:
- Zero-copy and limit size when handing buffer to I2NP
- Log hex dump message on I2NPMessageException, like in SSU
- Don't close connection on I2NPMessageException
- Earlier detection and better logging of
truncated TunnelGatewayMessage and DatabaseStoreMessage
- Fix and enhance UnknownI2NPMessage implementation
- Don't deserialize or verify the checksum of the
embeddedI2NP message in the TunnelGatewayMessage
at the IBGW, just use UnknownI2NPMessage and pass it along,
except if zero hop; Still to do: similar thing at OBEP
- Round expiration times when converting to/from seconds for SSU
- Cleanups and javadoc
- Change large MTU from 1492 to 1484 and small from 608 to 620
for encryption padding efficiency
- Enforce sent MTU limit
- Increase receive buffer size from 1536 to 1572 so that excessive-sized
packets sent by 0.8.9-0.8.11 routers aren't dropped
- Limit the max acks in a data packet
- Limit the duplicate acks in successive data packets
- Only include acks that will fit in the mtu in a data packet
- Correctly remove acks from the pending set after they are sent,
so they aren't sent repeatedly
- Don't pad data packets unless necessary
- Debug logging and javadocs
- Complete rework of participating traffic RED.
Implement an accurate bandwidth tracker in FIFOBandwidthRefiller.
- Fix drop priority of VTBM at OBEP
- Lower drop priority of VTBRM at IBGW
- Raise threshold from 95% to 120%
- Remove unused things in HopConfig
...needs more testing...