- 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.
- Display custom error pages for I2PSocketExceptions (ticket #788)
- Tag I2PSocketException text for translation (no bundles yet)
- Move methods from superclasses to I2PTunnelHTTPClientBase
- Fix connect client error pages, but they aren't displayed anyway
- Don't start I2PTunnelRunner threads in constructor (ticket #973)
- Synch close() in I2PTunnelServer
- Cleanups and javadocs
- 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
- Allow host:port targets; set defaults in i2ptunnel.config (ticket #1066)
- Don't fail start if hostname is unresolvable; retry at connect time (ticket #946)
- Output IRC message on connect fail
- Update target list on-the-fly when configuration changes
- I2PSocketManagerFactory: New createDisconnectedManager(), javadocs
- I2PSessionImpl: Rewrite state management and locking, prevent multiple
connect() calls, but allow disconnect() to interrupt connect()
- I2PSimpleSession: Changes to match I2PSessionImpl
- I2PTunnelServer: Don't connect in constructor, use createDisconnectedManager()
for a final manager, finals and cleanups
Lightly tested.
Todo: I2PTunnelClientBase
To import a branch of trunk into Eclipse, create a new workspace based in the
root directory of the checked-out branch, and then select "File -> Import..."
then "General -> Existing Projects into Workspace", then for "Select root
directory" choose the root directory of the branch (and of the workspace).
Select all projects that appear, so that dependencies are satisfied.
Currently left out are i2psnark, routerconsole and susimail, because they all
depend on jars in apps/jetty/jettylib, which seems to be auto-generated. Need
to check whether the existence of that folder (from having Eclipse files in it)
will prevent the jars being populated or not.
- Set default read timeout in standard server
- Reduce header timeout, enforce total header timeout
in IRC and HTTP servers (ticket #723)
* Streaming: Don't ignore option or force connect timeout to 5 minutes
* Streaming javadocs
* SocketTimeout cleanup
- More client options cleanups
- Options changes now propagate to running
socket managers and sessions, and through to the router
* SocketManager:
- Simplify factory, use 4-arg constructor,
make fields final, deprecate 0-arg constructor
- Improve how options are updated
- Javadocs
* I2PTunnel:
- Pass port through HTTP client proxy
- HTTP server proxy sets host header to
the value of "spoofedhost.xx" option for port xx
- Set client options more efficiently