(low latency improvements part 2)
Timer is created in PeerState messageFullyReceived() and messagePartiallyReceived().
Don't send a delayed ack-only packet if acks are sent in a data packet first.
Reviewed and tested by zlatinb.
Related MRs: !36!37!38
where the service relative URL is an absolute path
and the location absolute URL is below the top level.
Fixes communication with "Freebox" UPnP routers.
ref: http://zzz.i2p/topics/3157
- Fix compatibility check for OB tunnels
- Add test code to send STBM to explicit peers
- Skip too-many-tunnels check when in test mode
- Cleanups and Log tweaks
- Don't require AES keys for short records
- Derive keys from noise ck
- Use derived keys to garlic-encrypt reply at OBEP
- Register reply key with SKM
- Only use short message for client tunnels if client supports EC
- Set nonce for chacha/poly reply record
- Add tagsReceived() for single tag to MuxedSKM
- Add extended TunnelCreatorConfig.toStringFull()
- BRR toString() enhancements
- Test enhancements
- Remove ITBM, change record length from 236 to 218 bytes
- Fix check of blank record in BuildReplyHandler
- Fix offset constants for short record in BuildRequestRecord
- Fix BuildMessageTestStandalone test 6 (short inbound)
- ITBM class removal TODO
- Add new internal-only ShortTunnelBuildReplyMessage,
for processing of STBM as a reply.
- Add support for inbound tunnel tests to TunnelBuildMessageStandalone.
The ITBM test is WIP.
- Add checks for unset plaintext record in ITBM and OTBRM
WIP, still disabled, proposal not complete
- Use ChaCha20 to encrypt/decrypt records
- Add OTBRM methods for plaintext record
- Add OTBRM checks for correct plaintext slot number
- Add BRR checks to prevent use of nonexistent AES key/IV
- Set plaintext reply at OBEP in BuildHandler
- Allow OTBRM in InboundMessageDistributor
- Remove timing measurements in BuildMessageProcessor.decrypt()
- Add test to BuildMessageTestStandalone for outbound build
- Add check for all replies to BuildMessageTestStandalone
- Log tweaks
Older miniupnpd 2.0 will send a SSDP search response with an IPv6 location to a IPv4 address,
but newer ones 2.2 won't. So we need to also bind to an IPv6 address for the SSDP search
to receive the router's IPv6 location. Then we can bind to our public IPv6 address
for a port forward and it will work when miniupnpd is configured for "secure".
Also, don't bind a POST request to a mismatched v4/v6 address.
- Generate and parse short record format
- Encrypt and decrypt short records
- Register handlers for 3 new messages ITBM/STBM/OTBRM
- Send ITBM/STBM if all hops support it (disabled)
- Reply with OTBRM at OBEP if STBM received (disabled)
- Send STBM at IBGW if ITBM received (disabled)
- Add logic for when to send new messages
- ChaCha encryption of other short records
- Fix compare logic in ITBM parser (ticket #2814)
All is still preliminary, disabled, untested; proposal is still incomplete
Still todo:
- Fill in plaintext record for ITBM/OTBRM
- OTBRM key/tag