* SSU:
- Separate PeerState outbound message list into a queue for unsent messages
and a list for sent messages awaiting ack
- Implement PeerState outbound queue as CoDelPriority
- Implement backlogged indication like in NTCP
- Add caching in RouterAddress with secondary caching
in Addresses; use caches to speed up transport bids,
blocklist checks, geoip lookups, and profile organizer checks
(ticket #707)
- Limit IP cache size in TransportImpl
- Clear caches at shutdown
* RouterAddress: Remove unused expiration field to save space
- Centralize priority definitions
- Raise netdb store and reply priority
GarlicMessage:
- Add notes about GarlicMessageHandler and HandleGarlicMessageJob
being unused in practice
- Limit queue sizes
- Add stat for overflow
- Remove some stats
- Change pumper to LinkedHashSet for efficiency
(like NTCP Reader/Writer)
- Limit messages pumped per cycle to increase
round-robin fairness
- Comment out some unused code
- Javadoc
- Limit UDPSender queue size
- Increase UDPSender max packet lifetime
- Clear UDPSender queue before sending destroys to all
- Increase PeerState queue size so large streaming windows
don't get dropped right away, especially at slow start
- Various improvements on iterating over pending outbound
messages in PeerState
table lookup for more flexibility
* Streaming: Use packet type and current window size to adjust
number of tags sent and tag threshold, to improve
efficiency and reliability
- Use extended I2CP options for datagrams
- Fix timeout for sent datagrams
- Reduce token timeout
- Check token age before use
- Limit incoming token size
- Add methods for sending a message with extended options
- Fix cases where the efficient sendNoEffort() wasn't being used
* OCMOSJ:
- Implement per-message overrides for tag threshold,
tags to send, and bundle leaseset
- Fix bug adjusting timeouts
- Warn on client expiration time bugs
- Use external, not internal port to sign SessionCreated message.
Together with previous fix to allow external port change, this
should fix session establish fails when NAT changes our port
- Track outbound establishments by both Hash and IP/port,
to improve lookups of establishments in progress
- Fix expiration of outbound establishments
- Validate address/port in RelayResponse messages
- Change RemoteHostID to store Hash instead of byte[] for the peer hash
- Log tweaks