* 2010-11-15  0.8.1 released

2010-11-08 zzz
    * I2CP: Fix NPE caused by null session options (seen in i2pbote)

2010-11-06 HungryHobo
    * New Ant target: debianrepo
    * Rename debian target to debian-binary
    * New debian target generates binary and source packages
    * Debian tweaks

2010-11-03 zzz
    * Merge and snark fixups

2010-11-01 zzz
    * ClientConnectionRunner: Add synch to fix race causing AIOOBE
                              (http://forum.i2p/viewtopic.php?t=5061)
    * configlogging.jsp: Parse log limit with current locale
                (ticket #118)
    * i2psnark:
      - Limit number of parallel requests of a single piece when in the end game
      - Shorten and weight the speed tracker so the display is more
        reflective of current speed
    * logs.jsp: Add message if wrapper log not found
                (ticket #103)

2010-10-30 zzz
    * i2psnark:
      - Priority mapping bugfix
      - Close files as we go when creating/checking
        so we don't run out of file descriptors
      - Update request queues after priority change
      - Only add wanted pieces to wanted list at startup
      - Make sure lastRequest is null when it should be
      - Delay during StopAll so we don't close the tunnel before the
        stopped announces go out and reopen it
      - Logging tweaks

2010-10-27 zzz
    * i2psnark:
      - Don't stay interested if we run out of pieces
        to request (thanks sponge)
      - Enhance debug mode to show requests
      - Priority mapping bugfix
    * Transport: Avoid rare NPE at startup

2010-10-24 zzz
    * FileUtil: Make it easier to compile without Pack200, or with
                Apache Harmony's Pack200, add unzip to main()
    * i2psnark: Catch a race after disconnect()
    * NTCP: Catch a race after stop()
    * Router: Set permissions on wrapper.log when not called by RouterLaunch
    * Systray: New doc and main()

2010-10-22 sponge
    * Sanity and some fixs for slackware package

2010-10-22 sponge
    * Fix rc.i2p for slackware package

2010-10-19 zzz
    * Escape & in logs and i2psnark (much more to do)
    * JobImpl: Deprecate two debugging methods
    * replaceAll() -> replace() when we don't need regex

2010-10-15 zzz
    * i2psnark: Add file priority feature
    * I2PSocketEepGet: Set connect delay to save a RTT, will
      speed announces in i2psnark

2010-10-12 zzz
    *** 1.6 or higher JDK now required to build
    * configlogging.jsp:
      - Add easy way to add an override
      - Make file size specifier more flexible
    * Console:
      - Sort RouterAddress options on netdb.jsp and peers.jsp
      - Remove unused web-*.xml file from war
    * Crypto:
      - Convert all ArrayList caching to LBQs in YKGenerator,
        HMACGenerator, and AESKeyCache.
      - Change DSAEngine params from Hash to new SHA1Hash, since
        these were really 20 byte hashes, not 32 byte Hashes.
      - Add stats to track YKGenerator caching success
      - Fix YKGenerator precalculation to be much more useful by
        increasing the cache size and dramatically shortening the delay
      - Option cleanups
      - YKGenerator cleanups
      - Mark HMAC256Generator unused
    * EepGet: Reset length variable on redirect
    * Files: Change permissions to 600/700 for all written files/directories.
      Now requires Java 1.6 to build, but only 1.5+ to run.
      (requires 1.6 to set permissiomns)
    * GeoIP: Fix locking bug causing lookups to stop
    * Hash: Throw IAE if data length is not 32 bytes,
      now that DSAEngine abuse is gone
    * HTTPResponseOutputStream:
      - More caching
      - Stats cleanup
      - Max header length check
      - Catch OOM
      - Initializer cleanup
      - Javadoc
    * I2CP:
      - Add new option i2cp.messageReliability=none, which prevents the
        router from sending MessageStatusMessages back in reply to an
        outbound SendMessageMessage. Since the streaming lib always ignored
        the MSMs anyway, make it the default for streaming.
        This will reduce the I2CP traffic significantly.
        MSM handling now avoided, but it is still fairly broken, see
        comments in I2PSessionImpl2.
      - Cleanups to replace method calls with fields
      - More cleanups, javadoc, rate reduction
    * i2psnark:
      - Compact response format
      - Add link to finished torrent in message box
      - Don't let one bad torrent prevent others from
        starting or stopping
      - Sort peers by completion %
      - Add some missing mime types to web.xml
      - shouldLog() cleanup
    * i2ptunnel:
      - Now that streaming flush() is fixed, use it in IRCClient, and
        for initial data in I2PTunnel runner, to avoid the 250 ms
        passive flush delay
      - Add hostname DSA signature field, to be used for addkey forms.
        Experimental, may be commented out later.
      - More header blocking (thanks telecomix!)
      - Remove unused web-*.xml file from war
    * Installer: Add startup hint for non-x86
    * Javadoc updates all over the place
    * LogConsoleBuffer: Java 5
    * Naming:
      - Increase cache size and expiration time
      - Add clearCache() method
      - Don't use EepGet or Exec for b32
      - Javadoc updates
    * NetDB:
      - Expire unreachable routers quickly, even if they don't have introducers,
        so we don't have old data on routers that ran out of introducers.
      - Fix rare NPEs at shutdown
    * NTCP:
      - Cleanups
    * Streaming:
      - Make flush() block less, by waiting only for "accept" into the
        streaming queue rather than "completion" (i.e. ACK from the far end).
        This prevents complete stalls when flushing, and should help performance
        of apps that use flush(), like i2psnark (and SAM?).
        close() still does a flush that waits for completion, as i2ptunnel
        doesn't like a fast return from close().
      - cleanups
    * SusiDNS:
      - Remove unused web-*.xml file from war
    * TransportManager: Convert _transports from a List to a CHM
      to prevent a rare concurrent exception
    * Tunnels:
      - Don't use peers < 0.7.9 for tunnels due to the old
        message corruption bugs
      - Javadoc
      - Cleanups
    * UDP:
      - Beginnings of destroy message support
      - Try to avoid running out of introducers by relaxing selection criteria
        and increasing minimum number of potential introducers
      - Avoid rare AIOOBE
      - PacketBuilder refactor
      - Make most classes package private
      - Comments
      - Logging cleanup
      - Comment out a main()

2010-10-10 sponge
    * Fulfill Request for name resolving in BOB

2010-09-15 dr|z3d
    * I2PSnark: Overhaul UI, implement new theme.

* 2010-07-12  0.8 released

2010-07-08 zzz
    * I2PTunnel: More error propagation fixes

2010-07-07 duck
    * RouterConsole: Add Help & FAQ link, minor label improvements.

2010-07-05 zzz
    * i2psnark: Fix transition to end game
    * I2PTunnelIRCClient: Filter PART messages like we do for QUIT

2010-07-04 duck
    * RouterConsole: Dutch translation (thanks to monkeybrains)

2010-07-03 zzz
    * Build: Fix poupdate dependencies
    * I2PTunnel: More error propagation fixes
    * I2PTunnelHTTPClient: Don't use BufferedReader

2010-07-01 zzz
    * EventDispatcher: Minor cleanups and comments
    * I2PTunnel: Don't start a tunnel if no valid destinations;
      cleanups, logging, and error propagation fixes
    * Transport: Fix NTCP address generation when host is specified but port is auto

2010-06-29 sponge
    * 25%-50% cpu savings in BOB. The remainder of the fix is in streaming
      lib, which aparently keeps running and does not sleep according to
      profiling.

2010-06-29 zzz
    * CapacityCalculator: Cleanup
    * I2PTunnel: Add default HTTPS outproxy
    * Jetty: Disable TRACE and OPTIONS in console and eepsite
    * RouterInfo: Add main() to dump RI files
    * Scale prng.buffers based on max memory, reduce default from 16 to 9
    * SOCKS: Better HTTP error message

2010-06-26 zzz
    * I2PTunnel:
     - Move connection profile and delay connect to advanced config section
     - Add persistent client key support to SOCKS IRC
     - Fix display of interactive setting
    * jbigi, jcpuid: Suppress log messages when not in router context
    * jetty.xml: Add info on how to configure for following symlinks
    * logs.jsp: Add more JVM version info so we can distinguish OpenJDK from Sun

2010-06-16 zzz
    * Console: Sort countries with selected locale
    * FileUtil: Try to handle lack of unpack200 support more gracefully
    * Update: Select old update URL if no unpack200 available

2010-06-13 zzz
    * Console: Add some divs for languages to news and readmes
    * HTTP Proxy: Pass different User Agent to outproxy
    * i2psnark:
      - Move config to separate page
      - Icon tweaks
    * Translation: zh fix

2010-06-12 welterde
    * fixed possible race-condition and improved code style in ObjectCounter utility class

* 2010-06-07  0.7.14 released

2010-06-07 zzz
    * Misc tweaks after code review

2010-06-05 zzz
    * Netdb:
      - Use new receivedAsReply flag in LeaseSet to mark
        those received as response to a query
      - Mark which methods in FloodfillPeerSelector may return
        our own hash
      - Redefine selectNearest() so it may return our own hash,
        so it can be used for closeness measurement
      - Redefine findNearestRouters() to return Hashes
        instead of RouterInfos
      - Fix LeaseSet response decisions for floodfills, based
        on partial keyspace and closeness measurements
      - List only count of published leasesets in netdb

2010-06-03 zzz
    * NewsFetcher: Delay a minimum amount at startup
    * Update: Fix multiple updates after manually
      starting update - caused by refreshing summary bar
      (thx 'backup'!)

2010-06-02 zzz
    * graphs.jsp: Tag some more
    * Translation: Set xgettext add-comments option
    * UDP: Fix a bug from a blank i2np.udp.host config
      causing frequent RouterInfo updates and incorrect
      addition of introducers, caused by config.jsp handling
    * Update: Change default update URLs to .su2 for pack200

2010-06-01 zzz
    * i2psnark:
      - More listing fixes
      - Revert choker change
      - Start end game a little sooner
    * Installer: Disable pack200 in updater again, doesn't work
      on Java 1.5
    * Remove jetty from updater - it's been in for a few
      releases, and i2psnark now has its own listHTML method

2010-05-27 zzz
    * Translate: Add GNU ngettext (plurals) support

2010-05-26 zzz
    * i2psnark: Listing fixes and cleanups;
      icons on front page; tweak bw choker again

2010-05-24 zzz
    * i2psnark: Listing icons and cleanups

2010-05-23 welterde
    * core:
      - fixed major security hole in DatagramDissector
    * I2PTunnelServer: Implemented WEBIRC support in IRC server tunnel

2010-05-23 zzz
    * i2psnark:
      - Choke slower when at bandwidth limit
      - Fix completion % for small files
      - Use Random from context
    * NewsFetcher:
      - Add backup URL
      - Change to 0 retries (was 2)

2010-05-21 zzz
    * i2psnark:
      - Spiff up dir listings
      - Urlify some messages
      - Only go into end game at the end

2010-05-19 zzz
    * Data: Remove lots of unnecessary initializers
    * susidns: More validatation when adding entry

2010-05-15 zzz
    * Console:
      - Tag text in graphs
      - Move SummaryRenderer to its own file
    * Eepsite: Set no-cache in redirecting page
    * Hash: Move caching XOR methods only used by KBucket
      into netdb
    * i2psnark: CSS tweaks
    * Log: Translate priority

2010-05-13 zzz
    * netdb.jsp debug tweaks
    * Plugins: Try to prevent ZipErrors after upgrade

2010-05-10 zzz
    * Console:
      - Summary bar tweaks
      - Add monthly bw estimate
    * DataHelper: Deprecate inefficient eq() methods
    * i2psnark:
      - Add tunnel config dropdowns
      - Comment out old proxy stuff
    * NetDB:
      - Handle old and duplicate stores more efficiently
      - Have DataStore put() return success
      - Move getDistance() to its own class
    * Router: Add router.forceBandwidthClass advanced config for testing
    * Streaming: Add support for connection throttling
    * TunnelPoolManager: Concurrent
    * UDP: To help limit connections, don't offer to introduce
      when floodfill

2010-05-10 sponge
     * PluginStarter: If there is some delay, there may be a really good reason for it.
       Loading a class would be one of them!
       So we do a quick check first, If it bombs out, we delay and try again.
       If it bombs after that, then we throw the ClassNotFoundException.

2010-05-05 zzz
    * build.xml: Create packed sud in release
    * Console:
      - Print stack trace if exception on startup
      - IllegalStateException rather than NPE if no context
    * EepGet: Limit max times to fail completely even if numRetries is higher
    * i2psnark: Skip 'the' when sorting snarks
    * I2PTunnelHTTPClient: Reject 192.168.*
    * Plugins:
      - Set classpath for specific client only, not for the whole JVM
      - Use ConfigDir() not AppDir()
    * Replace size() <= 0 with isEmpty() everywhere, ditto > 0 -> !isEmpty()
    * RouterInfo: Clean up use of sortStructures()

2010-05-02 zzz
    * ByteCache:
      - Add a per-cache stat
      - Limit each cache based on max memory
      - Disable in UDP MessageReceiver
      - Add clearAll() method to be called when under
        severe memory pressure; call from Router
    * Plugins: Fix version checker bug

2010-04-27 zzz
    * i2psnark: Serve downloaded files from the servlet rather
      than with a file: link
    * Jetty: Backport directory listing bugfix from jetty 6
    * peers.jsp: Cleanup and tag

* 2010-04-27  0.7.13 released

2010-04-23 zzz
    * Plugins: Cleanups

2010-04-21 zzz
    * EepGet: Don't convert a MalformedURLException into
      an IOE so we recognize it when it's thrown
    * ReusableGZIPStreams:
      - Concurrent
      - Workaround for Apache Harmony 5.0M13 Deflater bug
    * TrustedUpdate: Increase buf size for extraction

2010-04-18 zzz
    * configclients.jsp: Start button logic for clients was inverted
    * Console: IRC links in readmes and initialNews
    * I2PTunnelServer: Debug log incoming conns
    * Transport: Reduce floodfill max NTCP conns to 425 (was 500)

2010-04-16 sponge
    * BOB early session destroy to speed up tunnel tare-down.

2010-04-15 zzz
    * DataHelper: Limit max length in readline()
    * Floodfills: Increase max to 100 (was 60) and min to 60 (was 45)
    * i2ptunnel: Log tweaks
    * I2PTunnelHTTPServer: Limit max header lines

2010-04-15 sponge
    * I2PTunnelHTTPClient: Test for "http://:/" and output error page.
      This avoids an ArrayIndexOutOfBoundsException, which can eventually
      cause the eepproxy to stop functioning.

2010-04-12 zzz
    * configstats.jsp: Fix full stats checkbox default
    * i2psnark:
      - Concurrent, limit, display, log tweaks
    * i2ptunnel: Implement access lists for TCP servers.
      Enter b32 or b64 hash or dest into list box, and
      check enable for whitelist. Uncheck enable and enter
      i2cp.enableBlackList=true in advanced i2cp options for
      blacklist. Todo: make black/whitelists radio buttons.
    * LogManager: Concurrent

2010-04-10 zzz
    * i2psnark:
      - Disconnect seeds that connect to a seed
      - Lower per-torrent conn limits for large pieces
    * Startup:
      - Don't die horribly if there is a router.info file
        but no router.keys file
        http://forum.i2p/viewtopic.php?t=4424
      - Log tweaks
    * Streaming:
      - Fix the window size increment logic so it
        does it much more often

2010-04-08 zzz
    * Key Manager: Hopefully avoid some races at startup
      http://forum.i2p/viewtopic.php?t=4424
    * OCMOSJ:
      - Increase min timeout
      - Logging tweaks
    * Streaming:
      - Detect and drop dup SYNs rather than create
        a duplicate connection - will hopefully fix
        "Received a syn with the wrong IDs"
      - Send reset for a SYN ACK with the wrong IDs
      - Don't send a reset to a null dest
      - Logging tweaks
      - Cleanups

2010-04-05 zzz
    * Console:
      - Add tooltip support for plugin links
      - Make target=_blank for plugin links
      - More HTML transitional fixes
      - Standardize on 'save' to the right of 'cancel'

2010-04-02 zzz
    * FloodfillPeerSelector: Adjust rankings again

2010-03-31 zzz
    * FloodfillPeerSelector: Adjust rankings to try to
      improve LeaseSet lookups
    * HostsTxtNamingService: Don't load the whole hosts.txt
      into memory for every lookup

2010-03-29 zzz
    * build.xml: Prep for a windows-only pkg
    * configclients.jsp:
      - Always show start button for webapps and plugins
    * configclients.jsp, configupdate.jsp:
      - Fix submission when entering CR in a text box
    * EepGet: Don't retry after a MalformedURLException
    * HTTPResponseOutputStream: More static
    * Plugins:
      - Stop all plugins at shutdown
      - Log tweaks
    * WebApps:
      - Remove the WAC after stopping it
      - Stop a WAC before starting it to prevent dups
      - Implement destroy() in addressbook to prevent dups
      - Implement destroy() in i2psnark to prevent dups

2010-03-25 zzz
    * configclients.jsp: Fix dup anchor
    * Console: Sort plugin links in summary bar
    * i2psnark:
      - Send numwant=0 if we don't need peers
      - Report returned complete and incomplete counts
        if higher than peer count
      - Allow missing peer list
      - Log tweaks
    * netdb.jsp: Tag transport properties
    * Plugins: Remove final check and install console
      messages after a while
    * PrivateKeyFile: Add b32 output
    * Reseed: Add another host

2010-03-18 zzz
    * Blocklist, CommSystem, FIFOBandwidth, TransportManager,
      OutNetMessage, InNetMessagePool:
      - Java 5 cleanup
    * ByteCache:
      - Replace some locks with concurrent
    * Clients:
      - Negative delay means run immediately and inline
      - Add methods to test class and run inline,
        to propagate errors to the console
      - Use new methods for plugins
      - Add javadoc for clients.config format
    * config.jsp: Set burst to +10% for 20s by default,
      to fix bug where the burst stays high when limits
      are reduced.
    * FIFOBandwidthRefiller:
      - Replace global counters with atomics
      - Use lockless shortcut methods to grant
        requests if we can satisfy immediately
    * i2psnark: Tweak upload bw tracking
    * Installer: Enable pack200 (-3.3MB)
    * Job Queue:
      - Replace some locks with concurrent
      - Change job ID to a long so it won't wrap
      - Remove some unused stats
      - Java 5 and debug cleanup
    * KeyManager: Concurrent
    * logs.jsp: Add link to trac
    * netdb.jsp: Display transport cost if not default
    * Peer Manager:
      - Replace some locks with concurrent
      - Switch back to fast version of getPeersByCapability()
      - Java 5 cleanup
    * Streaming: Concurrent
    * Throttle:
      - Remove some unused stats
    * Tunnel Builds: Enable VTBM
    * Tunnel Dispatcher: Discard at IBGW based on router clock,
      not system clock.
    * TunnelGatewayPumper:
      - Refactor for concurrent
    * UDP:
      - Big refactor of several classes for concurrent,
        elimination of several locks
      - Reduce max number of resent acks in a packet to
        lower overhead
      - Take incoming messages from the head of the queue,
        not sure why taking them from the tail "reduces latency"
      - Java 5 cleanup

2010-03-17 zzz
    * I2PTunnel: Disable nonce checking when console password set
    * Reseed: Add another host

* 2010-03-15  0.7.12 released

2010-03-13 zzz
    * Partial fix for i2ptunnel nonce troubles

2010-03-08 zzz
    * Floodfills: Increase max to 60 (was 28) and min to 45 (was 20)
    * i2psnark: Better track outgoing bandwidth by incrementing
      counter before the blocking write
    * Random: Remove and deprecate some old classses
    * Reseeder: Reduce max response size to 1MB (was 8MB)

2010-03-05 zzz
    * Console:
      - Tag reseed messages
      - Translate country names on flag popups
    * I2PSOCKSIRCTunnel:
      - New, for filtering IRC client traffic when using SOCKS
    * I2PTunnelIRCClient:
      - Make filter classes static and public for use by SOCKS
      - Eliminate redundant case conversion
      - Pass ISON message through (jIRCii uses it for pings)
      - Switch back to StringBuffer since it's used by 2 threads
      - Set daemon on filter threads
    * SOCKS5Server:
      - Fix handling of multiple authentication methods

2010-03-02 zzz
    * Console:
      - Add link to jobs.jsp on configservice.jsp
      - Add plugin disableStop support
    * Context: Add boolean getProperty methods
    * HTTP Proxy:
      - Fix address helper conflicts caused by last checkin
      - Use B32 instead of random hostname for conflict link
    * LoadClientAppsJob:
      - Fix unquoted arg after quoted arg
      - Logging cleanup

2010-02-27 zzz
    * eepsite: Add some help to index.html
    * HTTP Proxy:
      - Put B32 instead of B64 in Host: header, saves 450 bytes
      - Eliminate some redundant lookups
      - Fix http://i2p/b64/ and /eepproxy/site/ requests
      - Disallow a port specified for an i2p address
      - Cleanup and comments
      - For more info see http://zzz.i2p/topics/566
    * i2psnark:
      - Fix NPE after create file failure
      - Sanitize more characters in file names
    * netdb: Fix NPE after OOM http://trac.i2p2.i2p/ticket/38
    * NTCP Transport:
      - Replace lists with concurrent queues in EventPumper
        and NTCPConnection to remove global locks
      - Java 5 cleanup
    * Plugins: Support console themes
    * UDP Transport:
      - Replace the unused-since-2006 TimedWeightedPriorityMessageQueue
        with DummyThrottle
      - Don't instantiate and start TWPMQ Cleaner and OutboundRefiller
        threads, part of priority queues unused since 0.6.1.11
      - Don't instantiate and start UDPFlooder, it is for testing only
      - Prevent NPE http://zzz.i2p/topics/571

2010-02-23 zzz
    * Unzip: Any files in the zip with a .jar.pack or .war.pack extension
      will be transparently unpacked with unpack200. Savings is about 60%.
      Someday we will do this for suds, but we can do it for xpi2ps now.
    * build: Add updater200 target

2010-02-22 zzz
    * configclients.jsp:
      - Add js delete confirm
      - Remove delete button for webapps
    * i2psnark:
      - Ignore a non-i2p tracker in a torrent rather than deleting
        the torrent, thus "converting" a torrent to in-netowrk use
        via the open trackers
      - Add js delete confirm

2010-02-19 zzz
    * i2psnark: Make file box bigger
    * Plugins:
      - Fix display of download status
      - Unhide

2010-02-18 zzz
    * Clock: Slew tweak
    * i2psnark: Improve error message when finding HTML
    * HTTP Proxy: Fix blank page instead of error page for eepsite unreachable
    * Plugins:
      - Fix plugin start button
      - Change signer prop to match docs
      - Tweaks
    * Transport:
      - Fix recognition of IP change when not firewalled
      - Require consecutive identical results from two peers before changing IP
    * TrustedUpdate: CLI exits 1 on failure for ease of use in scripts

2010-02-15 zzz
    Propagate from 3 dev branches.

    i2p.i2p.zzz.test:
    * Clock:
      - getFramedAveragePeerClockSkew() now returns a long (ms);
        was a Long (s)
      - Implement NTP-style clock slewing so the clock is adjusted
        gradually
      - Implement clock strata so we prefer better clocks
      - Implement a timestamper in the transport so we will periodically
        update the clock even if NTP is not working.
        This allows the router to converge the clock instead of simply
        hoping the first connected peer is correct.
      - Slow down NTP attempts after several consecutive failures
    * Console: refactor and tag update messages
    * Streaming: MessageOutputStream logging tweaks
    * Transport:
      - Prepare for using address costs
      - Adjust bids based on address cost
      - Increase cost if near transport capacity, disabled until 0.7.12
      - Clear the geoip negative cache periodically

    i2p.i2p.zzz.plugin:
    * Jrobin: Move from routerconsole.jar to its own jrobin.jar,
      adjust classpath in routerconsole.jar manifest
    * Plugins:
      New plugin support, hidden for now, enable with router.enablePlugins=true
      Configure and add plugins on configclients.jsp
      Supports the following:
      - Console webapps
      - New translation bundles
      - Link on console
      - Anything that can be started in clients.config
      - Additions to classpath for clients and webapps
    * TrustedUpdate:
      - Add method to check if we know about a key
      - Add method to add a key
      - Add method to extract without verifying
      - Add method to get key signer name
    * Webapps: Allow additions to a webapp classpath.
      - Pull jstl.jar and standard.jar out of susidns.war
      - Remove 100KB of duplicate classes from i2psnark.war

    i2p.i2p.zzz.VTBM:
    * I2NP: Add UnknownI2NPMessage so we can route unknown message types
    * Tunnel Builds:
      - Add getRecordCount() to TunnelBuildMessage and TunnelBuildReplyMessage so they can be extended.
      - New I2NP Messages VariableTunnelBuildMessage and VariableTunnelBuildReplyMessage,
        which contain the number of request slots in them.
      - Convert all static assumptions of 8 slots to getRecordCount()
      - Use the new VTBM if all hops in the tunnel and the OBEP or IBGW of the reply tunnel
        support it, and the tunnel is 4 hops or shorter.
      - Reply to a VTBM with a VTBRM of the same size
      - Make BuildReplyHandler static
      - Convert the currentlyBuilding List to a ConcurrentHashMap to speed reply lookups
        and eliminate a global lock; don't put fallback tunnels in there
      - Add new tunnel.corruptBuildReply stat
      - Various cleanups and javadoc
      - Fix first hop expiration for Build Messages, was way too long
      - Randomize Build Message expiration to make it harder to guess hop position
      - Save expired tunnel build configs for a while, so that we will still use the tunnel
        and update peer stats if the reply comes in late
      - Don't update our own profile for Tunnel Build Replies
      - VTBM generation only through routers >= 0.7.12
      - VTBM generation disabled for now

* 2010-02-15  0.7.11 released

2010-02-13 sponge
    * Fix addWebApplications API goofup
    * Bump BOB version, which I forgot to do.

2010-02-13 zzz
    * Floodfills: Increase max to 28 (was 15) and min to 20 (was 10)

2010-02-12 sponge
    * org.mortbay.jetty.Server modified method to accept attributes for
      batch webapp launches via addWebApplications.

2010-02-10 zzz
    * I2PTunnelRunner: Flush initial data, for some reason it wasn't
      getting flushed ever in some cases.

2010-02-10 zzz
    64-bit windows installer fixes. Still no 64-bit wrapper.
    Thanks eche|on for testing!
    * Izpack:
      Add 64-bit windows dll so installer doesn't die trying to add shortcuts
    * Launch4j:
      Upgrade to launch4j 3.0.1 2008-07-20.
      The license is BSD for launch4j and MIT for the wrapper code in head/
      Changelog is in installer/lib/launch4j/web/changelog.html
      Hopefully this will fix installs for 64-bit JRE on 64-bit windows.
      The previous version was 2.0-RC3 2005-08-13.
      The previous license was GPLv2 for launch4j and LGPLv2.1 for the wrapper code in head/
      The bin/ld.exe and bin/windres.exe files were contributed by
      i2p users in 2005 so the i2p installer could be built on windows.
      They have not been updated for 3.0.1, so pkg builds on windows
      will presumably still get 2.0-RC3.

2010-02-06 zzz
    * Console: Fix saving update keys, was broken in 0.7.10
    * i2psnark: Add transmission ID
    * news.xml: Wrap i2p version tags in XML comment
    * Transport: Try yet again to prevent two NTCP pumpers

2010-02-04 zzz
    * i2psnark: Fix sending stopped events to the tracker

2010-02-03 zzz
    * Console:
      - Hide update buttons and update config if install dir is readonly or if configured
      - Show yellow star if no outbound tunnels
    * i2psnark: Don't prefer to opportunistically unchoke unchoking peers when not interested
    * NetDb: Lower min RouterInfo expiration to 2.5h (was 3h)

2010-01-31 zzz
    * i2psnark standalone: Fix CSS
    * Jetty: Update to 5.1.15 to get ResourceHandler fix

2010-01-30 sponge
    * Fix NPE in TCPtoI2P when a lookup fails, report the error to the stream.
    * Fix setkeys bug in DoCMDS, forgot to create the object before calling
      it's methods, which threw an NPE.

2010-01-29 zzz
    * build.xml: Add a debian-source target
    * Data structures:
      - Speed up some hashcode() and equals()
      - Cleanup and javadoc
    * Jetty: Turn on checkAliases
    * NetDb:
      - Add basic DOS prevention for lookups
      - Move flood throttle check so we don't throttle ourselves
      - Don't store over client tunnels to pre-0.7.10 floodfills
      - Don't update unused lease fail stats
    * Startup: Disable browser launch for debian daemon

2010-01-28 welterde
    * enhance support for multiple RouterAddresses' of the same style in RouterInfo

2010-01-26 zzz
    * build.xml: Speed up distclean additions
    * Clock: Don't refuse to update because of peer skew the first time
    * Debian: Fixup, update, enhance scripts
    * I2NP: Various cleanup and bulletproofing
    * Log: Try to avoid complaints at shutdown
    * Profiles: Fix lack of profiles at router startup, especially for new routers
    * stats.jsp: Shrink the dropdown box

2010-01-24 zzz
    * ProfileOrganizerRenderer: Cleanups
    * Reseed: Update welt's reseed hostname
    * Transport clock skews:
      - Store and report UDP clock skews even for large values, so
        a badly skewed local clock will be reported to the console
      - Don't shitlist for NTCP clock skew if we don't know what time it is
      - If NTP hasn't worked yet, have NTCP or SSU update the clock one time
      - Include failed clock skew in NTCP skew vector if there aren't many connections
      - Don't include NTCP clock skews for non-established connections
      - Fix framed clock skew frame size
      - Report framed clock skew even if for only one peer, if NTP hasn't worked yet
      - Don't log RRD errors after clock adjustment
      - Reduce min skew for console warning to 30s (was 45s)
      - More Java 5 cleanups

2010-01-24 zzz
    * Clock:
      - Don't let a client update the router clock
      - Restore and enhance vanished clock error log message
    * Graphs: Enforce max size to lessen chance of OOM from malicious link
    * NetDb:
      - Move stat initialization, reduce number of rates
      - Add basic DOS prevention by not flooding if stores are too-frequent
    * ProfileOrganizer:
      - Limit High Cap to 75 max
      - Reduce max lock wait time, change no lock error to warning
      - More cleanup
    * Startup:
      - Enable multiple parallel job runners much sooner to speed startup
      - Rearrange the startup order to get the long jobs started sooner
      - Don't allow the netDb readin job to clog the job queue

2010-01-21 dr|z3d
    * New eepsite structure and enhanced pages. Now with graphics and stuff!

* 2010-01-22  0.7.10 released

2010-01-21 zzz
    * eepget.bat: Add to pkg
    * Floodfills: Increase max to 15 (was 9) and min to 10 (was 4)
    * I2PTunnelServer: Fix bug preventing connection retries
      at startup from working
    * Logs: Don't be quite so noisy in the wrapper log if we
      can't open the router log
    * Properties: Don't play games with \r and \n on load/save,
      it was causing fatal issues on DOS if your username started
      with r or n

2010-01-19 sponge
    * Firewall fix for NTCP, where firewalls will forget a NAT relationship
      on a stream... AKA setting keepalive. This should fix the stuck NTCP
      issue that has been bothing zzz for years.
    * Set keepalive on BOB connections too, since this will assist closing
      the connections in the event of a crash on a client.

2010-01-18 zzz
    * configclients.jsp: Fix add-new-client feature
    * Console: Add a tunnel share ratio estimate
    * graphs.jsp:
      - Remove jrobin sig
      - Set lower limit to 0
      - Save settings when changed
    * Reseed: Support SSL and proxies
    * Translate: Catch empty string

2010-01-17 zzz
    * Clock: Change a CRIT to an ERROR, lower threshold for changing from 10s to 5s
    * configclients.jsp: Support add, delete, edit
    * I2CP: Clean up resources on 5-minute leaseset timeout at startup
    * LeaseSet generation: Increment the lease date slightly, to force
      the floodfill to flood it when it changes
    * NetDb Lookups: Don't try to send a RI lookup to itself through a zero-hop tunnel
    * NetDb Stores and Verifies:
      - Do LS stores and verifies through client tunnels
        to prevent correlation by the OBEP or FF
      - Encrypt LS stores to prevent snooping by the OBEP,
        if the floodfill supports it
      - Encrypt LS and RI verifies to prevent snooping by the OBEP
      - Extend verify delay and timeout
      - Reenable RI verifies
      - Disallow simultaneous verifies for the same key
      - Don't resend on verify timeout; try a different peer instead
      - Don't resend to same peer on verify fail, try a different one
      - Adjust ff selection criteria
      - Flood even if received garlic-encrypted
    * Profiles: Limit fast peers to 30 max
    * SSLEepGet: New
    * Tunnels: Prevent more than one zero-hop tunnel in a lease
    * VersionComparator: Move from TrustedUpdate.java to util

2010-01-14 sponge
    * Fully clean up I2PTunnel. No more lint issues, should compile 100%
      clean.
    * Dropped unused class BufferLogger from I2PTunnel as it is not used
      anylonger.

2010-01-14 sponge
    * Clean up reverse connection ability, remove some annoyingly redundent
      code. Place all settings in the console. It works!

2010-01-10 sponge
    * Insert reverse connection ability into the http server code so that
      seedless can start to get worked on. It's disabled by default.

* 2010-01-12  0.7.9 released

2010-01-12 zzz
    * I2CP: Clean up resources on 5-minute leaseset timeout at startup
    * Increase max floodfills to 9 (was 6)
    * Temporarily disable routerInfo floodfill verifies
    * Fix .fr eepsite index css
    * Javdoc tweaks


2010-01-09 zzz
    * Include new eepsite indexes in pkg

2010-01-06 zzz
    * Summary bar tweaks

2010-01-02 sponge
    * Fix one last stupid mistake in build.xml, my fault.

2010-01-02 sponge
    * Fix NB 6.8 goofyness... 'till ant 1.7.1 or > is needed, stay with NB
	6.5, as the newer ones place a check for 1.7.1. We require 1.7.0

2010-01-02 sponge
    * Fix build.xml target for justBOB
    * Fix Main build.xml so that it actually deletes backup files and add a
      few extra types that should be commonly needed... atleast by me.

2010-01-02 zzz
    * Console: Save refresh setting
    * i2psnark:
      - Don't URL-encode chars we don't have to
      - CSS tweaks
    * Transport: Implement 'laptop mode' to change ident and port
      when the IP changes

2010-01-01 sponge
    * Happy New year everyone!
    * Added a target to generate a stand-alone BOB jar file.

2009-12-31 zzz
    * BuildResponseRecord: Make static
    * i2np: Remove unused logs
    * i2psnark: Fix message box, was a little too small
    * InternalSocket: Fallback to external socket on fail
    * NetDb: Fix exploration by adding a null hash to mean
      "don't give me floodfills"
    * PeerSelector: Downgrade floodfills with high fail rate

2009-12-26 zzz
    * Console:
      - Tag the rest of logs.jsp
    * Tunnels, Transports:
      - Lots of code to detect improper reuse of cached objects
        after release
      - Prevent release of TunnelDataMessage cached ByteArray,
        as it may be reused if retried in another transport;
        a nasty bug causing corrupt messages
      - Prevent race with released resources in UDP OutboundMessageState;
        a nasty bug causing corrupt messages
      - More cleanups and comments
    * UDP: Bid lower than NTCP when we need introducers and don't
      have enough

2009-12-22 zzz
    * Tunnels:
      - Do RED dropping before the IBGW fragmenter, not after
      - Change batch time to 250ms for IBGWs (was 100ms)
      - Change batch time to 150ms for exploratory OBGWs (was 100ms)
      - Start a new message in the fragmenter if almost full
      - Fix a major, longstanding synchronization bug in the FragmentHandler
        which led to corrupt messages at the endpoints
      - More cleanups and comments

2009-12-20 zzz
    * Console:
      - Fix status to show a disconnected network error rather than
        clock skew or UDP error when disconnected
      - Use peer clock skew rather than clock offset for determining
        whether to display clock skew error
      - tunnels.jsp: Clarify tunnel table headings
    * Contexts: Add isRouterContext() method
    * Profile, DBHistory:
      - Tweak the rate periods
      - Add a global fail rate stat
      - Increase the HashMap sizes
    * Router: Move some more threads to I2PAppThread so an OOM won't
      crash the router
    * Timestamper: Reduce delays (cuts 10s out of router startup)
    * Transport: Rework peer clock skew method to always return a value
    * Tunnels:
      - Reduce the drop probability for TunnelBuildMessages at the OBEP
      - Schedule outbound startup instead of hanging the thread for 3s
      - Cleanup preprocessor code, add comments

2009-12-18 zzz
    * Console: Fix spacing in update section
    * I2CP:
      - Move client-side writes to their own thread
      - Reenable InternalSockets
    * i2ptunnel: Fix bundle script
    * InNetMessagePool: Cleanup
    * Log:
      - Close old file on rotate
      - Buffer writes
      - Write in UTF-8
    * SusiDNS:
      - Remove untranslatable button images (-15KB)
      - Tag buttons and messages
      - Add some button CSS
    * Tunnel building:
      - Increase timeout to 13s (was 10s)
      - Fix tunnel.buildReplyTooSlow stat
      - Tweak logging
      - Prioritize expl. builds over client builds
      - Code cleanups
    * TunnelSettings: Drop, unused

2009-12-15 zzz
    * HTTP Proxy: Make jump server list configurable
    * I2CP: Remove unused logs
    * i2psnark: Fix stop/start, cleanups
    * i2ptunnel: Fix bundle location
    * SusiDNS:
      - Rewrite and correct a lot of the text, tag jsps
      - UTF-8 fixes
    * TunnelManager: Fix a locking bug
    * Update: Improve error message

2009-12-13 zzz
    * Find ResourceBundles in wars
    * Fix restart from config.jsp if no wrapper
    * i2psnark: Elaborate popups

2009-12-12 welterde
    * Sort peers on tunnels.jsp by country
    * fix NPE in ^^

2009-12-12 zzz
    * Disable InternalSockets until it's fixed

2009-12-11 zzz
    * Addressbook, susidns: Rework addressbook into a
      HttpServlet, so susidns can kick it when the subscription
      list changes
    * Build: Truncate the history in the updater (-80KB)
    * Console:
      - Add a nicer handler for missing webapps
      - Restore the restart message
      - Change "depth" to "length"
    * Data: Cache the Hash hashcode
    * EepGet: Use InternalSocket if available
    * Fragmenter: Pull the new comments, new stats, and
      debug log fix from i2p.i2p.zzz.batch in - but not the
      batching mods, which need a fresh look.
    * I2CP: Implement an internal "socket" class that
      allows clients in the same JVM to connect to the
      router without going through the kernel
    * I2NP: Drop unused classes
    * i2psnark:
      - Translation support
      - Tweak torrent name popup
    * I2PTunnel:
      - Translation support
      - Switch all I2PThreads to I2PAppThreads
      - Run an InternalSocket as well for the HTTP Proxy
    * Naming Services:
      - New EepGetAndAddNamingService that appends new
        hosts to hosts.txt
      - Move default reverseLookup to base class
      - Deprecate unused services
    * NetDb:
      - Switch from ArrayList to ConcurrentHashSet in
        KBucketImpl to reduce chance of deadlock;
        remove periodic shuffling of the bucket,
        needs to be addressed elsewhere
    * SusiDNS:
      - Translation support
      - Remove jsp's from the war
    * Translation: Move code from routerconsole to core,
      to support translation of other webapps

* 2009-12-08  0.7.8 released

2009-12-08 zzz
    * Misc. cleanups after review, prep for release

2009-12-06 zzz
    * netdb.jsp: Fix bug caused by XSS fix
    * Translations: drop ru until after release

2009-12-05 zzz
    * Build: Fix poupdate dependency
    * Console: Add Russian option

2009-12-05 sponge
    * BOB: fix a critical bug causing ghosts on probes
      and remove unused code.

2009-12-04 zzz
    * Console: Close up some possible XSS (thanks Pragmatk)
    * i2psnark: Config cleanup, more HTML transitional fixes
    * readme*.html: Point to translated pages on www.i2p2.i2p

2009-11-29 zzz
    * config.jsp: Comment out unused stuff better
    * profiles.jsp: Hide non-ff from ff table
    * HTTP Proxy: Don't send proxy.i2p to the naming service,
      it was making the error pages load slowly
    * SOCKS Proxy: Fix an error message
    * Transport: Fix the default inbound burst

2009-11-29 sponge
    * net.i2p.router.transport.udp deadwood code cleanup.
    * documented rare NPE in InboundEstablishState.java.

2009-11-28 sponge
    * Improvement to BOB's TCPio to hopefully lower load average. It seems
      to be helping a little when stress-tested with Robert.

2009-11-24 zzz
    * DataStructures: Remove unused Logs
    * OrderedProperties: Simplify, use in i2psnark
    * Profiles: Record successes in the DB fail rate
      too, so we can calculate a percentage
    * profiles.jsp:
      - Change fail rate from count to percent
      - Hide standard profiles by default
    * Streaming:
      - When an "immediate" ack is requested, do it within
        250 ms (was 2000)
      - Request immediate acks when < 1/3 of window remains,
        or when < 3 packets remain in window,
        and every 8 packets (was when < 2 packets in window remain)
      - Change requested delay to RTT/2 (was RTO/2)
      - Log cleanup and javadoc

2009-11-21 zzz
    * GeoIP: Update to Nov 17 2009 data
    * Netdb Floodfill rework part 4 of N:
      - Search closest-to-the-key
      - Put closest-to-the-key in explore don't-include-list
      - Use facade's peer selector for exploration rather than
        instantiating a new one
      - Adjust response time limit
    * netdb.jsp: Add popups on flags
    * Routerconsole build: rename include files so they aren't
      compiled and bundled separately (~15KB)

2009-11-18 zzz
    * Build: Don't update the po files by default, add new
      target "poupdate" to do that.
    * Netdb:
      - Floodfill rework part 3 of N: Send closest-to-the-key
        in DSRM replies
      - Adjust criteria for following DSRM
      - Note failed floods in the profile
      - Reduce max flood

2009-11-16 zzz
    * addressbook: Move class to net.i2p.addressbook
    * build: Take two test scripts out of the installer
    * i2psnark: Bye TPB
    * Shitlist: Fix bug from two checkins ago, all were forever

2009-11-14 zzz
    * HTTP Proxy:
      - Add support for error page translations
      - Add support for external pages for all errors
      - Fix lack of \r in error page headers
      - HTML transitional fixes
      - Cleanups
    * UDP PeerTestManager: Throw in some synchronization to
      try to fix stuck tests

2009-11-11 zzz
    * Console: Some colon cleansing
    * FloodfillPeerSelector: Adjustments
    * Shitlist: Move HTML renderer to router console,
      add cause parameter for ease of translation,
      tag all causes

2009-11-11 zzz
    * Addressbook, NamingService: Allow 516 byte dests
      that end with AA but not AAAA, so we can permit
      non-null zero-length certs.
    * Console:
      - Tag tunnel status
      - Add transport table to netdb.jsp
    * i2psnark:
      - Reject torrents with too many pieces
      - Reject torrents with a single file named *.torrent
      - Increase max piece size to 2MB (was 1MB), but reduce
        max number of connections to lessen ooms
    * Netdb FloodOnlySearchJob:
      - Fix up field hiding and duplicate overrides
      - Other javadoc and java 5 improvements
    * Netdb StoreJob, FloodfillVerifyStoreJob:
      - Fix bug where reply selector wasn't registered for
        routerinfo stores, so we didn't get stats, and
        we kept retrying. This also prevented verification
        and profile updates for routerinfo stores.
        This bug was introduced 4 years ago by the change to
        store routerinfos directly.
      - Add dbStoreSuccessful() to profile, and have FVSJ
        call it or dbStoreFailed() as appropriate to give
        credit or blame to the floodfill we stored to.
      - Don't let FVSJ verify using the peer we stored to
    * Netdb Stores:
      - Floodfill rework part 2 of N:
        Store and verify closest to the key, subject to
        last-failed lookup and store stats.
      - DataHelper: Fix broken byte[] compareTo() used by XORComparator,
        was not doing unsigned comparisons!
      - FloodfillPeerSelector: Use standard XORComparator
        now that it works, instead of messing with BigInteger
      - FloodfillVerifyStoreJob: Set correct timeout for
        requeued store job (was only 10s)
      - KNDF: Rework getPeerTimout() to use 1 day averages,
        and lower the min, max, and multiplication factor.
      - Publish jobs: Lengthen timeout to 90s (was 30s for
        routerinfos and 60s for leasesets)
      - StoreJob: Limit max peer timeout to 15s for direct stores
    * Streaming: Fix unused resend delay field in the packet header,
      it is defined as seconds and we were not dividing by 1000,
      so we were truncating 1000 to one byte which equals 232.
    * UDP:
      - Better handle a test reply from bob with a 0-length IP
      - Add config options for min and max random port

2009-11-09 dr|z3d
    * New midnight blue lightweight theme; supports IE and provisions its own console_big.css
    * Streamlining and honing of console_big.css

2009-11-07 zzz
    * Console:
      - countries.txt: Convert to mixed case, include in update
      - netdb.jsp: Hide all routers by default, sort and tag country names
      - oldstats.jsp: Move to stats.jsp
      - profiles.jsp: Show new DBH times instead of counts
    * Profiles:
      - Track last good and bad lookup times
        and last good and bad store times,
        to prep for floodfill changes
      - Don't reset last-heard-about at router startup
    * Checklist and Android readme fixups

2009-11-04 zzz
    * Build:
      - Move some files to installer/resources
      - Fix initialNews.xml in install package
    * Console: More tagging
    * NetDb: Reduce routerinfo expiration slightly
    * Profiles:
      - Remove the almost-unused send and receive size RateStats;
        this also reduces the effective time for isActive()
      - Only store DB history on-demand to save space;
        fix up resulting NPEs
      - Savings: ~2MB heap
    * Throttle: Reduce max msg delay to 1250ms (was 1500)
    * UDP: Pick a random port on first install or bind failure -
      No more port 8887 to prevent easy state-level blocking

2009-11-04 sponge
    * Fixups to Slackware scripts

2009-10-31 zzz
    * Console:
      - More tagging
      - Show user-installed themes on configui.jsp
      - Fix reseed button spacing
    * GraphHelper cleanup
    * Susidns: add link to subscription faq

2009-10-29 zzz
    * Console tag fixes, bundle script fix
    * Add help target to build.xml

2009-10-28 zzz
    * Console:
      - Rewrite TrustedUpdate version comparator, use for netdb version table
        so 0.7.10 will be sorted correctly
      - Reduce netdb.jsp memory usage
      - More tagging fixups
      - configclients.jsp fixup for "Web console"
      - Remove limiter status from peers.jsp
      - Fix UPnP status header
    * NetDb:
      - Generate new RI immediately at startup
      - Try again to not publish RI until we have been up a few minutes

2009-10-26 zzz
    * Console:
      - Add parameterized tag
      - Don't save config when checking for updates on configupdate.jsp
      - Refactor confignav.jsp to java and tag
      - Start tagging profiles.jsp
      - Rework ConfigRestartBean and tag
      - More tag fixups
      - Add lang=xx for testing
      - Add file for additional tagged strings

2009-10-23 zzz
    * Certificate: Fix the (apparently unused) readBytes(byte[], int) method
      for a null certificate - http://zzz.i2p/topics/388 - thanks HungryHobo
    * Console:
      - Don't hide link to configui.jsp for IE any more
      - Add lang selection on configui.jsp
      - Tag strings in configui.jsp
      - Load console_big.css if lang == zh
      - Add _x() tag for static iniitializers
      - HTML transitional input tags
      - Rename cssHelper to intl for ease of tagging
    * Update: Better error message when .sud file not found or truncated
      http://forum.i2p/viewtopic.php?t=3979
      The bug with the file going to the wrong place was fixed a couple months ago.

2009-10-21 dr|z3d
    * Enhance index.jsp with "paperclips" for the main links
    * Tighten sidepanel layout to gain us some vertical screen real estate
    * Update news.xml with the correct link for Chinese translation page

2009-10-20 zzz
    * I2NP: Remove old TunnelCreateMessage and TunnelCreateStatusMessage
    * Logger: Don't kill the whole JVM if we can't open the log file
    * MessageHistory: Cleanups
    * NetDb: Move renderStatusHTML to routerconsole
    * Router Console translation infrastructure:
      - Persistent lang setting with routerconsole.lang=xx
      - Loading any page with ?lang=xx changes the persistent setting
      - Add a custom Jetty handler to load foo_xx.jsp if it
        exists for language xx. This is for jsp files with lots
        of text in them. Otherwise use inline translate methods.
        Not for included jsps.
      - Add a script to create and update messages_xx.po translation
        files, and create ResourceBundles from them
      - Add class to translate strings from cached ResourceBundles
      - Add translate wrappers to HelperBase, FormHandler, and *Renderer,
        so calls can be made from both jsp and java files
      - Add example translations on configupdate.jsp - two in
        the jsp itself and one in the helper.
      - This is for strings in routerconsole only. Will be expanded
        to other webapps and the router later.
    * summarynoframe.jsp:
      - Refactor to SummaryBarRenderer (saves 100KB)
      - Add translate tags
      - Use context RNG for nonces
      - Transitional HTML style for input tags
    * TunnelDispatcher: Drop messages that expire far in the future
    * TunnelPoolManager: Move renderStatusHTML to routerconsole

2009-10-16 dr|z3d
    * Extensive UI whitespace cleanups and positional finessing.

2009-10-16 zzz
    * Crypto: Two more test classes out of the lib
    * FloodfillMonitor: Slow down the volunteers again
    * i2psnark: Add TPB tracker
    * NetDb: Rework part 1 of N:
      - Flood only to those closest to the key
      - Java 5 fixups
    * oldconsole.jsp: Remove almost all of it, add lines for tino
    * ProfileOrganizerRenderer:
      - Move to routerconsole
      - Write directly to Writer for speed
    * Router: Add router.hideFloodfillParticipant option for testing
    * StatisticsManager: Cleanup after release

* 2009-10-12  0.7.7 released

2009-10-11 zzz
    * Misc. cleanups after review, prep for release

2009-10-09 zzz
    * ElGamalEngine: Fix rare AIOOBE (thanks hottuna!)
    * I2PTunnel: Fix persistent client tunnel keyfile location
    * peers.jsp: Fix NTCP rate formatting (thanks hottuna!)

2009-10-09 dr|z3d
    * Add paste.i2p2.i2p, and echelon's software links to readmes (thanks 
      to GoHE for Swedish translations); cosmetic tweaks to same.
    * Various optimizations and tweaks to all 3 themes.

2009-10-07 zzz
    * Doc and eepsite_index updates
    * UDP: Remove port number from thread names

2009-10-04 zzz
    * i2psnark: Fix NPE caused by last checkin (thanks wuxia!)

2009-10-02 zzz
    * BuildMessageTest: Move out of the lib
    * i2psnark: Fix changing opentracker list
    * Makefile.gcj: fixups
    * OCMOSJ: Fix SKM NPE on closed dest
    * ProfileOrganizerRenderer: static tweaks
    * SusiDNS: HTML transitional fixes, might help opera
    * Tunnel IVValidator: Increase size of bloom filter
      for high-bw routers (>= 512KBps share bw) to reduce
      false positive rate. Adds 2MB heap for >= 512KBps routers
      and 6MB for >= 1536KBps.

2009-09-21 sponge
    * fixups to SlackBuilds. requiredbuilder does the wrong thing, and
      thinks that java is perl! This isn't really a big deal, 
      the file format is simple enough and the requirements are known.

2009-09-07 mkvore
    * removes a SAM v1&2 bug

2009-09-04 zzz
    * SessionKeyManager, OCMOSJ, Garlic:
      - Enable per-client SessionKeyManagers for better anonymity
      - tagsDelivered() now means tags are sent, not acked.
      - OCMOSJ uses the new TagSetHandle object returned from tagsDelivered()
        to call tagsAcked() or failTags() as appropriate.
      - Assume tags delivered on an established session to
        reduce streaming lib stalls caused by massive tag deliveries;
        should increase throughput and window sizes on long-lived streams
      - Unacked tagsets on a new session are stored on a separate list
      - Don't kill an OB Session just because it's temporarily out of tags
      - Increase min tag threshold to 30 (was 20) due to new speculative
        tags delivered scheme, and to increase effective max window
      - More Java 5 and dead code cleanups, and more comments and javadoc,
        debug logging cleanups
      - Key toString()s for easier debugging
      - HandleGarlicMessageJob: cleanup of unused things
    * Tunnel TestJob:
      - Consume the tag after a failed test so it doesn't
        stay in the SKM
      - Disable tests with router.disableTunnelTesting=true
    * configkeyring.jsp: Add delete and cancel buttons
    * Logging: Fix directory for rotated log
    * TunnelDispatcher: Cleanup

2009-09-02 sponge
    * Small logic fix for dr|z3d

2009-08-28 zzz
    * Client: Fail if no date handshake after 30s or no leaseset
      after 5m, rather than hanging forever.
    * Console:
      - Prevent OOMs in NewsFetcher or StatsSummarizer from
        killing the router
      - Fix favicon (-17)
    * Data: Speed up many hashcodes
    * DataHelper: Fix byte array hashcode for small arrays
    * DecayingBloomFilter:
      - Replace with new DecayingHashSet for 3 of 4 uses,
        and also in the 4th if the router is low-bandwidth.
        Saves 8 MB heap.
    * EepGet, I2PSnark:
      - New I2PSocketEepGet fetches through existing tunnels
        rather than through the proxy
      - Use new eepget for i2psnark
      - Add a fake user agent for non-proxied fetches
      - Cleanups
    * NetDb:
      - oops, store leaseset locally even when shutting down
        (fix -16)
      - Java 5 cleanups
    * PRNG:
      - Rename config option to prng.buffers (was router.prng.buffers)
      - Change the default from 16 to 2 for I2PAppContext (saves 3.5MB)
    * Tunnel:
      - Adjust the random drop probability for the message size
      - Concurrentify HashSetIVValidator
    * TunnelPool:
      - Don't test tunnels when shutting down
      - Less rates
      - Java 5 cleanups

2009-08-24 zzz
    * ClientManager:
      - Prevent client destination theft by rejecting duplicates
      - Java 5 cleanups
    * Console:
      - Put favicon on every page
      - Make every page UTF-8, ☃ safe for snowmen
      - Remove options boxes on configtunnels.jsp
      - Fix UTF-8 form submission (i2ptunnel too)
      - Throw 403 instead of 404 from flags.jsp and viewstat.jsp
        so we don't render error.jsp
    * I2CP: Fix the SessionConfig serializer in DataHelper,
      so that UTF-8 tunnel names are not corrupted by
EARLIER HISTORY IS AVAILABLE IN THE SOURCE PACKAGE
