I2P 0.9

Milestone information

Release registered:
No. Drivers cannot target bugs and blueprints to this milestone.  

Download RDF metadata


Assigned to you:
No blueprints or bugs assigned to you.
No users assigned to blueprints and bugs.
No blueprints are targeted to this milestone.
No bugs are targeted to this milestone.

Download files for this release

After you've downloaded a file, you can verify its authenticity using its MD5 sum or signature. (How do I verify a download?)

File Description Downloads
download icon changelog-since-0.8.13.txt (md5) i2p 0.9 changelog 33
last downloaded 11 weeks ago
download icon i2psource_0.9.tar.bz2 (md5, sig) I2P 0.9 Source Code 208
last downloaded 11 weeks ago
download icon i2pinstall_0.9.jar (md5, sig) I2P 0.9 installer (Linux / OSX / FreeBSD / Solaris) 52
last downloaded 14 weeks ago
download icon i2pupdate_0.9.zip (md5, sig) I2P 0.9 Update 24
last downloaded 37 weeks ago
download icon i2pinstall_0.9_windows.exe (md5, sig) I2P 0.9 installer (Windows) 157
last downloaded 7 weeks ago
Total downloads: 474

Release notes 

In the 0.9 release we migrate to Jetty 6 for the console and eepsite web server, and introduce a simplified router console home page. This release is network-compatible with prior releases, however see below for important information on compatibility with existing eepsites, plugins, and webapps. Upgrading is recommended.

Update info

In-network updates and new installs will include Jetty 6, Tomcat, and JSTL. PPA (Ubuntu/Debian) updates will have new dependencies for these packages.

If you have not enabled or modified your eepsite settings, the update should automatically migrate you to Jetty 6. If you do not use Jetty for your eepsite, the update will not affect it.

If you have more than one Jetty eepsite or you have changed the local port (7658 by default) or otherwise edited jetty.xml, you must manually edit the new jetty configuration files after updating, and then restart.

For those with Jetty-based eepsites, we recommend that you verify that the upgrade was successful and the eepsites are operational after the router restarts.

Plugin information:
Plugins not listed below should continue to work under Jetty 6.
The following plugins require updates for Jetty 6. The router will download and install them a few minutes after upgrading: i2pbote, pebble, zzzot
The following plugins have been renamed and for Jetty 6. Users must manually remove them and download the new versions after upgrading: neodatis, seedless

Other non-standard console and eepsite webapps not packaged by the I2P development team may or may not require modifications.

Major changes

- Jetty 6.1.26, Tomcat 6.0.35, JSTL 1.2, supporting Servlet 2.5 and JSP 2.1 standards
- New simplified console home page. Note that it may be modified or disabled on the new page /confighome .
- The old .exe installer has been split into Windows (.exe) and non-Windows (.jar) installers
- Update to wrapper 3.5.14 (Debian packages and new installs only)

Bug Fixes

- Fix use of unacked ElGamal/AES Session Tags, causing permanently "stuck" connections
- Re-enable verifies of RouterInfo netdb stores
- Fix removal of context properties
- Fix handling of plugin installs requiring router restart
- Fix update key names being forgotten after a save on the config update page
- Fix i2psnark duplicate torrent messages
- Fix occasional NPE in the UDP transport


- More refactoring to get rid of static references which will help testing, shutdown, and embedded applications
- Reseed cleanups and checks
- Streamlining of tunnel endpoint message processing
- i2psnark bug fixes
- i2psnark private tracker support
- i2psnark tracker configuration form
- i2psnark message box cleanup
- i2psnark Javascript refresh
- i2psnark better error reporting
- Remove support for i2psnark "run standalone"
- Remove deprecated i2ptunnel Bean classes from the jar
- Increase max leaseset size from 6 to 16 for future growth
- Plugin tweaks
- Jetty logging moved from wrapper log to I2P log
- New page for viewing individual graphs for easy resizing and viewing of previous intervals
- Remove bandwidth from netdb stats
- Add negative lookup cache to naming service
- Reduce size of netdb structures
- HTTP Proxy refactoring to improve parsing of URLs and support IPv6 addresses, improve handling of malformed URLs, improved address helper handling
- Use per-destination streaming timers
- Better handling of leaseset/routerinfo overwrite attempts
- GeoIP update to April 2012 version (Debian packages and new installs only)
- German, Russian, Spanish, Swedish translation updates
- Non-default theme updates
- General code cleanups
SHA256 Checksums:

     006a306a2c5a449cce6a19378da5e74b8aa216ba5a9383a4c2cb66dfead2e736 i2pinstall_0.9_windows.exe
     6175c50a306cbd6ebe6eba40965408bd3f87f3ecd0f6199d7a927099c21d73c0 i2pinstall_0.9.jar
     8a3654a13781a9aacf9db94081e057be73322f88db2931eba4f2cfa467ead429 i2psource_0.9.tar.bz2
     234d4c0ad1736b389349c702bfcf70511e72770a414b0afe7e9f5e1f5ebca97d i2pupdate_0.9.zip
     78fc1af81b71b5797bf9900b5a98f4513af840b76e801c40b9e4abb5e7e37807 i2pupdate.su2
     63ec749a1da0c7913c09cc7bcf552497bebb873024ac42030c8a507c92aec9de i2pupdate.sud


View the full changelog

* 2012-05-02 0.9 released

2012-04-26 kytv
 * German, Spanish, and Swedish Translation updates
   from Transifex

2012-04-20 zzz
 * Remove search box
 * Fix i2psnark dir when started from Windows no-wrapper
   (ticket #627)

2012-04-14 kytv
 * Update wrapper to v3.5.14
 * Update geoip.txt from Maxmind's April 2012 database

2012-04-12 kytv
 * German, Spanish, and Swedish translation updates from Transifex

2012-04-12 zzz
  * Console:
    - Try again to fix console on Windows w/o IPv6
      by starting connectors individually
    - Fix whitespace issues on several pages
    - Prevent rare early NPE
    - Non-default theme cleanups
    - Theme and translate home page logo

2012-03-28 zzz
  * RouterInfo: Fix fatal NPE in last checkin

2012-03-27 zzz
  * FloodfillVerify:
    - Fix verifies stuck on one peer by blamimg the verify peer on failure
    - Follow DSRM in response to RI verifies
    - Increase floodfill verify timeout
  * Home page: Delay router down message until two consecutive fails
  * RouterInfo: Add method to validate sig during read-in for speed

2012-03-27 sponge
  * A hopeful fix to allow SHOUTcast/icecast to work over the http proxy.
  * A little more code clean up

2012-03-26 zzz
  * Code cleanups:
    - Remove unused imports
    - Remove unused local variables
    - Remove unused private fields
    - Remove unnecessary casts
  * Console:
    - Try again to fix console on Windows w/o IPv6 (ticket #621)
    - Move oldconsole rendering from Router to OldConsoleHelper

2012-03-24 zzz
  * GarlicConfig: Remove more unused methods
  * i2psnark:
    - Fix dup torrent msg with magnets (tickets #433 and #504)
    - Fix state when storage dies during transition out of magnet mode
    - Fix NPE in magnet mode
    - Error logging improvements
    - Support add-torrent with infohash alone
    - CSS tweaks

2012-03-22 zzz
  * Home page: CSS tweaks
  * Reseeder: Get rid of static instance, root in netDB,
              don't use system properties for status
  * RetransmissionTimer: Instantiate per-destination
  * Router: When removing a config setting, remove from context also
  * SimpleScheduler, SimpleTimer, SimpleTimer2: Replace static instances
    with I2PAppContext-rooted references

2012-03-20 zzz
  * i2psnark: Message area tweaks and clear link
  * NetDB:
    - Don't reread RI if netdb date is recent
    - Prevent LS/RI overwrites
    - Disallow hash mismatches in RI files
    - Reseed won't fetch our own RI
    - Reseed won't overwrite recent RIs
  * Router: Make runRouter() public

2012-03-19 sponge
  * Plugins: Less confusing message, fix CNFE by catch and ignore on delete.
             Order and reverse order plugin names for start/stop all cases.

2012-03-18 zzz
  * Jetty: Fix check alias override

2012-03-17 zzz
  * BuildHandler: Implement restart and shutdown to stop the thread
  * Jetty: Don't extract wars
  * FileUtil: Better logging of weird unpack200 errors
  * I2PTunnel: Make CLI-only methods private, and static where possible
  * Streaming: Scheduler cleanup

2012-03-16 zzz
  * FragmentHandler: Zero-copy read of unfragmented messages
                     for speed and to reduce object churn
  * Home page: Tag tooltip; CSS tweaks; news tweak
  * HTTP Proxy: Jump and addresshelper page tweaks
  * Jetty: Add I2P mime types to default eepsite config
  * OCMOSJ: Refactor cache to its own class, make non-static
  * TransportManager: Fix fatal exception on soft restart caused by DHSKB refactoring
  * TrustedUpdate: Preserve default key names even when keys are set
                   in advanced config

2012-03-15 sponge
  * Plugins:
    - String.isEmpty() [ java 6 ] -> (String.length() == 0) [ java 5 ]
    - for a file: URL, use "Attempting to copy plugin from" message
    - s/{0}// on non-translated string
    - grammar: "File copy failed {0}" -> "Failed to copy file from {0}"
    - use the context provided to get startup time
    - getCanonicalPath() -> getAbsolutePath()
    - install != update. Don't change the user's settings, and don't restart
      it on an update if "dont-start-at-install". This gives the same
      functionality as before.

2012-03-14 zzz
  * Blockfile, i2psnark: Remove static logs
  * DHSessionKeyBuilder:
    - Move from core to router/transport
    - Make non-static, instantiate in TransportManager
    - Generate keypair in constructor and make final
      to move more processing to the precalc thread
      and eliminate races
    - Synchronize getSessionKey() to eliminate races
    - Comment out unused methods
  * Jetty:
    - Set default cache-control for webapps and eepsite
    - Disable dir listing for console webapps
  * UDPTransport:
    - Make key builder final in InboundEstablishState to
      eliminate rare NPE (ticket #406)
    - Remove unused static instance
  * YKGenerator: Make non-static, instantiate in ElGamalEngine

2012-03-13 sponge
  * Add sponge.i2p :-D bump version.

2012-03-13 sponge
  * Plugins:
    - Fix a bug in the updater. It was not comparing the correct name.
    - Plugin updates can now be deferred if router-restart-required is set.
      The update happens at the next router restart.

2012-03-13 sponge
  * Plugins:
     - Handle 'file://' URLs for installation and updates (ticket #429).
       You must specify the entire path, e.g.
       - This works for updates too!
       - Only tested on Linux, needs to be tested on Windows.

2012-03-12 zzz
  * Console:
    - Better IPv6 test, hopefully will work on Windows
    - Hide home page flags once language is selected
    - Home page shrinkage and other CSS tweaks

2012-03-11 sponge
  * Slackware package script updates

2012-03-11 zzz
  * Build:
    - Include old commons logging classes in commons-logging.jar
    - Preserve manifests in Jetty/Tomcat jars
  * Jetty Logger: Promote warns to errors when a Throwable is the second arg

2012-03-11 sponge
  * fix broken comment in jetty.xml

2012-03-10 zzz
  * Build: Add new jetty jars to router.jar classpath so it works
    on very old installs with individual jars specified in the
    wrapper.config classpath
  * configloggging: Fix clearing log overrides
  * Console: Test if IPv6 addresses will work before instantiating
             connectors, so Jetty will still start without them
  * HTTP Proxy: Fix generation of jump links (ticket #616),
                broken by refactoring in -1
  * Jetty Logger: Put a note in wrapper log saying where the logs went

2012-03-09 zzz
  * Update default eepsite base context to use DefaultServlet
    instead of ResourceHandler, to provide resume, directory
    indexes, caching, etc.
  * Simplify default eepsite base and CGI contexts to use a Context
    instead of a ContextHolder, ServletHandler, and ServletHolder

2012-03-08 zzz
  * GarlicConfig: Remove unused reply block methods
  * SessionKeyManager:
    - Don't use unacked tagsets after consecutive ack failures
      and revert to full ElGamal if necessary (ticket #574)
    - Synchronize creation of new sessions to prevent dups
    - Don't remove an unacked session until it's really out of tags
    - Failsafe removal of old unacked tagsets
    - Cleanups, final, comments, log tweaks, debug.jsp tweaks, synchronization tweaks

2012-03-06 kytv
 * German and Spanish translation updates from Transifex

2012-03-06 zzz
  * i2psnark: Fix NPE on magnet link addition
  * Jetty logger: Fix stack trace logging
  * viewstat.jsp: Properly close the ImageOutputStream to fix
    NPEs in the finalizer, probably was the root cause of
    what we blamed on Jetty
  * Webapp class loader: Fix dup classes in classpath
    caused by last checkin (symptom: i2psnark in wrong directory)

2012-03-05 zzz
  * Build: Make windows and non-windows installers for release
  * configclients: Tweaks
  * Graphs: Add time interval to legend
  * NetDB: Increase min ff to 250
  * Plugins: Fix setting webapp classpath on Jetty 6
  * UDP: Log tweaks
  * viewstat.jsp: Set Connection: Close to work around Jetty bug

2012-03-04 zzz
  * Jetty: Upgrade to Jetty 6.1.26, Tomcat 6.0.35, and JSTL 1.2.
    - Supports Servlet 2.5 / JSP 2.1 standards
    - Jetty and Tomcat jars are checked in, no more need to
      download Jetty in the build process.
    - Bundle Jetty 6 rewrite handler and JMX
    - Bundle sample Jetty config files for rewrite, JMX, and SSL
    - Use ant's ant.jar instead of the one from Jetty
    - Port router console, i2psnark, and I2PRequestLog code to Jetty 6
    - Remove all old Jetty 5 patches and the custom Server() constructor,
      this will break Seedless use of the custom constructor
    - Fix up all .jsps to JSP 2.1 standards
    - Include automatic migration of clients.config,
      and of jetty.xml files for an eepsite at port 7658.
      New config includes files in eepsite/contexts and eepsite/etc
      Any other Jetty-hosted eepsites,
      or an eepsite not at port 7658 or with custom
      modifications of the jetty.xml file, will require
      manual editing of the new Jetty config files.
      This includes modifications for the seedless server in jetty.xml.
    - The following plugins are not compatible with Jetty 6
      and will be disabled until updates are available:
         i2pcontrol, pebble, and zzzot
    - Users updating must use the updaterWithJetty build target once,
      to get the new Jetty and Tomcat.
    - Put I2PRequestLog in its own jetty-i2p.jar
    - Jetty logging moved from wrapper to I2P log using the new I2PLogger class,
      also in jetty-i2p.jar
  * Console: Start all wars after the main console war,
    for faster startup and to prevent one failed war from preventing
    startup of the entire console
  * i2psnark: Disable i2psnark RunStandalone, unused and instantiated Jetty 5
  * i2ptunnel: Move i2ptunnel Bean classes from the jar to the war.
    These were deprecated for external use long ago.
    This will break very old seedless plugins; updates have
    been available for months.
  * susimail: Copy MultiPartRequest and other required classes from Jetty 5.1.15
    and add it to susimail, as the replacement MultiPartFilter in
    Jetty 6 is difficult to migrate to, and does not support content-type

2012-03-03 zzz
  * Console:
    - New simplified home page, refreshing with AJAX
    - New home configuration page
  * i2psnark:
    - CSS tweaks
    - Ajax and link fixes
    - Move js to console in prep for merging w/ homepage
  * NetDB: Remove bw stats (effective next release)

2012-03-02 zzz
  * BlockfileNamingService: Add negative cache
  * Build: Add built-by to jars; check for corrupt jars on debug page
  * configstats.jsp: Hide log settings unless already enabled
  * DataStructures:
    - 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
  * Graphs:
    - New single graph page with easy resizing
    - Support graphing of previous intervals
  * i2pinstall.exe: Add icon
  * i2psnark:
    - Add tracker configuration form
    - Remove custom tracker option from create form
    - Add private torrent option
    - More icons in buttons
    - Use js for refresh
  * I2PTunnelHTTPClient:
    - Refactoring to use Java URI parser to better handle
      escapes, IPv6 addresses, ports
    - Rewrite i2paddresshelper scanning/removal
    - Refactor out local server code
    - Nicer address helper error page
  * NetDB:
    - Reenable verify of RI stores, disabled in 0.7.9,
      checkin comments claim reenabled in 0.7.10 but didn't happen.
    - Synchronize StoreJob.sendNext() to avoid dups
  * netdb.jsp: Fix debug leaseset count again
  * susidns: Add b64 hash to details page

* 2012-02-27 0.8.13 released

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.

This milestone contains Public information
Everyone can see this information.