Release notes

The 0.8.13 release contains several bug fixes and a couple of new features. We are pleased that the last release significantly improved performance, and the network is running well despite continued rapid growth. Upgrading is recommended.

This is likely to be the last release before 0.9, in which we will migrate to Jetty 6, and introduce a simplified router console home page. Monitor the news section of your the router console in the coming weeks for more information on the next release.

Starting with this release, the router will check for and install plugin updates shortly upon restarting after a router update. To prevent this, add the advanced configuration plugins.autoUpdate=false before restarting. There is also a new update-all button on the client configuration page.

Routers in certain countries will now automatically enable hidden mode for increased protection. However, hidden mode may have lower performance or reliability, and is still a work in progress. To disable hidden mode before restarting, add the advanced configuration router.isHidden=false. To disable hidden mode later, select use all auto-detect methods under IP Configuration on the network configuration page. For the list of countries see the thread on zzz.i2p. The only country on the list that has more than one or two I2P users is China.

Major changes

- Check for and download plugin updates upon restarting after a router update.
- Routers in certain countries will now automatically enable hidden mode for increased protection.
- New Tunnel Wizard for creating tunnels

- A SIGHUP to the wrapper will now initiate a graceful shutdown

Bug Fixes

- Increase read timeout in HTTP Proxy
- Shutdown hooks will now run when router is shutdown externally (i2prouter stop), broken in 0.8.8
- If an external IP address is specified, bind only to that interface
- Fail tunnels we created when we can't contact the adjacent hop
- Prevent races when saving configuration
- For plugins, check min and max Jetty versions; check all version requirements at startup, not just at install
- Fix plugin startup when console is not on port 7657
- Only stop plugins if they are running
- Fix NPE when no network interfaces are present
- Fix eepget exit code on failure
- Improve inbound tunnel building when in hidden mode
- Publish our router info sooner after startup to facilitate inbound tunnel building
- Fix Streamr tunnel registration

2012-01-20 sponge
* Fix too short of delay for http. It is up to the browser to time out
in a shorter time, not the proxy. This is wreaking havoc on large
downloads, similar to the issues that we had in the distant past with
jetty's default timeout being too short.

2012-01-18 zzz
* I2PTunnel: Register ports with the PortMapper
* Router:
- Use new synchronized change-and-save-config methods
to eliminate races with ReadConfigJob
* Tunnels:
- When a peer is shitlisted, fail all our tunnels where
that peer is the adjacent hop. In particular this
will remove outbound tunnels when we can't contact
the first hop, and enable quicker recovery.
* Update: Find the proxy port in the PortMapper

2012-01-16 zzz
* Build: Put Implementation-Version in manifests
* NetDB: Hopefully fix rare NPE (ticket #589)
* Plugins:
- Only stop a plugin before update if it was running
- Only stop a plugin at shutdown if it was running
- Don't start a plugin after update if it was disabled
- Disable plugin if it fails version checks at startup
- Auto-update plugins after a router update
- Add update-all button and more cancel buttons
* Router:
- Add synchronized change-and-save-config methods to avoid races
- Save previous version in config so we know when we updated
* Transport: Revert change from -2, put addresses back in RouterInfo
when hidden, broke inbound tunnel building

2012-01-08 zzz
* Plugins:
- Enforce min and max Jetty versions at plugin installation
- Enforce I2P, Java, and Jetty versions at plugin startup too
* Router:
- No longer check for updates or start any threads in the Router constructor,
- 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().
* RouterInfo, RouterAddress: Optimizations and integrity checks
- 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
* Router shutdown:
- 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

0 blueprints
and
0 bugs
targeted

There are no feature specifications or bug tasks targeted to this
milestone. The project's maintainer, driver, or bug supervisor
can target specifications and bug tasks to this milestone to track
the things that are expected to be completed for the release.