- Remove static logs
- Sort addresses in RouterInfo at initialization only;
change from Set to List to save space
- Remove unused counters in Lease to save space
- Increase max leases to 16
inbound tunnels to improve success
* NetDB:
- Don't publish our RI if it has no addresses
- Publish our RI sooner after startup
to facilitate our IB tunnel builds
- Move PID and status files to config dir in i2prouter
- Don't set PID files in wrapper.config as Windows doesn't need them
and the wrapper won't start if the dir doesn't exist
- Move wrapper.log to config dir using override in i2prouter,
Windows stays in system temp dir
- Move wrapper.log to config dir for no wrapper
- Move wrapper.log setup for no wrapper from RouterLaunch
to WorkingDir
- Redirect stderr too when no wrapper
- Create config dir in i2prouter for Linux/Mac
- 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().