- Fix bug that left server acceptor thread running after close
- Add destroy() methods to release all resources when closing a tunnel for good,
particularly the streaming timer threads
- Use COWAL to prevent concurrency problems
- Javadocs
Streaming:
- Don't return null from accept() any more; actually throw
ConnectException as the javadocs have always specified
- Throw ConnectException from accept() if interrupted; previously caught and ignored
- Throw exceptions from ConnectionHandler.accept(), not higher up
- Close ServerSocket when ConnectionManager is shut down
- Synchronize setActive(), clear queue when starting to accept,
better handling of calls that don't change state
- Javadocs
ConfigClientsHelper: Call isPluginRunning() less often
PluginStarter: Simplify detection of active threads
Above changes mostly in support of zzzot plugin implementing ClientApp
and being able to shut down completely so there are no threads
in its thread group, so /configclients will all show status as stopped.
Previously, the I2PTunnelServer acceptor thread and
one or more streaming timer threads would remain.
- Better handling of unsupported encryption in destinations
- Implement handling of unsupported encryption in router identities
- Banlist forever all RIs with unsupported encryption
- New negative cache of all dests with unsupported encryption
- New methods for destination lookup that will succeed even if
the LS is expired or encryption is unsupported
- Use new dest lookup so client will get the right error code
later, rather than failing with no LS when we really got it
but just couldn't verify it.
- Cleanups and javadocs
OCMOSJ: Detect unsupported encryption on dest and return the correct failure code
through I2CP to streaming to i2ptunnel
Streaming: Re-enable message status override, but treat LS lookup failure
as a soft failure for now.
HTTP Client: Add error page for unsupported encryption
* OCMOSJ:
- Increase timeout if we must lookup leaseset
* Streaming:
- Shorter expire time in TCBCache
- Don't fail a connection once it is up
- Log tweaks
- Set ports on many packets that were missing them
- Use connection throttling methods on pings too (ticket #1142)
- Add methods to set ports on pings
- Argument checking on ping methods
- Support i2cp.destination.sigType option in TunnelController and
I2PSocketManagerFactory
- Fixup of Destination.create() and Destination.size()
- Add generic off/len methods in DSAEngine, needed for streaming
- Fixup of sign/verify in streaming Packet
- Javadocs
of signing keys and signatures in RouterIdentities and Destinations.
Untested, not even for regressions, except with command line
using PrivateKeyFile.
Based on preliminary spec at http://zzz.i2p/topics/1442?page=1#p7524
Not done:
- Transport handshake signing
- Configuration of default type
- Specification of type in options to I2PSocketManagerFactory
- Specification of type in i2ptunnel
- Fix up caching of SigningPublicKey and P256 key cert
- Any non-default crypto type in the key cert
- Documentation
- Add support for b64 conversion in destLookup()
- Catch invalid message length sooner
I2Ping:
- Extend I2PTunnelClientBase so non-shared-client,
I2CP options, and other features will work
- Fixes for fields and threading
Streaming:
- Send LS with ping (broken since 0.9.2)
- Set the NO_ACK flag on pings and pongs
- Fix several 'increment of volatile is not atomic' all over
Remaining: UDP PeerState.java, to be checked in separately
- Comment out all of unused MessageStateMonitor