* 2016-10-17 0.9.27 released

2016-10-16 zzz
 * Fix test for IPv6 firewalled configuration

2016-10-14 zzz
 * Translations: Update from Transifex

2016-10-10 zzz
 * Debian: Don't use glassfish-javaee.jar for jstl.jar (ticket #1793)

2016-10-06 zzz
 * GeoIP: Update from Maxmind 2016-10-04

2016-10-02 zzz
 * Crypto: Add EdDSA private key spec constructor for hash
 * i2psnark: Add standalone shutdown method
 * i2ptunnel: Registration page layout fixes
 * SusiMail:
   - Show settings button even if no messages
   - Add nonce to forms (thx Kevin Froman)

2016-09-24 zzz
 * DesktopGUI: Enable by default on Windows
 * i2ptunnel:
   - Don't accept default 'mysite.i2p' as a valid spoof host
   - Don't wrap destination in status message box
 * Reseed: Remove user.mx24.eu as requested
 * Utils: Move SipHashInline from util to crypto

2016-09-22 zzz
 * Crypto: Don't NPE in encoding when field not set
 * DataHelper: Fix read() for nonzero offset
 * i2ptunnel: Whitelist IRC AWAY inbound

2016-08-21 zzz
 * Console: Add jsps to view entire router.log and wrapper.log files

2016-08-19 zzz
 * CPUID: Add IDs for Kaby Lake
 * JettyStart: Fix main()
 * Router: Fix return code in getShutdownTimeRemaining()
 * Tunnels:
   - Enable tunnel testing when in hidden mode (ticket #1192)
   - Enable tunnel testing when without addresses (ticket #1835)
   - Use fast peers for inbound tunnels when without addresses (ticket #1835)

2016-08-14 zzz
 * i2ptunnel:
   - Register actual listen host with port mapper
   - Register POP and SMTP ports with port mapper
 * Reseed: Add new 'atomike' reseed

2016-08-12 zzz
 * i2ptunnel:
   - Add outproxy plugin support to SOCKS (ticket #1824)
   - Use preferred sigtype for new SOCKS tunnels

2016-08-09 zzz
 * Console: Fix UPnP NPE on /peers (ticket #1830)

2016-08-02 zzz
 * i2psnark: Fix SIOOBE on bad announce URL (ticket #1823)
 * SSU: Fix peer test stuck when IPv6-only (ticket #1819)
 * Streaming: Fix debug NPE (ticket #1821)

2016-07-20 zzz
 * SSU:
   - Increase minimum peers if we have a IPv6 address
   - Check for 'B' cap for peer test
   - Fix peer test IP length check

2016-07-18 zzz
 * i2ptunnel: Block 'Proxy' header
 * SU3File: Also look in config dir for signer certificate

2016-07-16 zzz
 * I2CP Client: Handle disconnect properly if received before first LS
 * Streaming: Kill accept() when session disconnects

2016-06-25 zzz
 * SSU peer testing: Add IPv6 implementation (ticket #1752; proposal #126)
 * Utils: Improve random seed initialization

2016-06-22 zzz
 * SSU peer testing:
   - Forget the test and don't keep retransmitting to Charlie
     if we receive the Bob reply after the 2nd Charlie reply
   - Only fire a peer test on connection if address has changed

2016-06-16 zzz
 * Console: Split up configclients, add configi2cp,
   configplugins, configwebapps (ticket #1804)

2016-06-15 zzz
 * Utils: Add method to set language in standalone app context
 * i2psnark:
   - Add form to set language in standalone context
   - Add Ukrainian and Japanese translations

2016-06-11 zzz
Prop from i2p.i2p.zzz.test2:
 * CPUID: Add CLI output for new AMD tests
 * i2psnark standalone (ticket #1191):
   - Cherry-pick fixes from psi's github i2psnark_rpc branch
   - Fix up Jetty XML file for Jetty 8
   - Start with JettyStart
   - Add UrlLauncher to launch browser
   - Fix up paths in CSS files during build
   - Force startup delay to 0
   - Fix theme selection
   - Adjust CSS and image paths
   - Add shutdown hook to delete temp dir
 * i2ptunnel CLI: Don't set the listen host to the I2CP host
 * jbigi:
   - Fix GMP version reporting for shared library (ticket #1800)
   - mbuild-all script fixes
 * NetDB: Improve handling of deferred search result jobs

* 2016-06-07 0.9.26 released

2016-06-03 zzz
 * Update translations from Transifex

2016-06-01 zzz
 * Build: Fix Debian build on ARM (ticket #1801)

2016-05-29 zzz
 * Console: Fix /configfamily form (ticket #1797)

2016-05-29 str4d
 * CertUtil: Dynamically load javax.naming classes to avoid
   VerifyErrors on some Androids
 * LogWriter: Dynamically load Android writer

2016-05-26 zzz
 * Build: Launchpad build fixes

2016-05-25 zzz
 * DesktopGui: Add monochrome icons for Windows and Mac
 * Reseed:
   - Require two sources minimum (ticket #1794)
   - Update list of sources requiring SNI
 * Translations: Update English po files

2016-05-22 str4d
 * I2CP: Dynamically load Android domain socket code

2016-05-20 zzz
 * DesktopGui:
   - Fix systray menu redraw on Mac;
   - Switch to AWT by default on Mac;
   - Hide DTG enable on Mac until we fix dock

2016-05-19 zzz
 * Config files, eepsite help: Add path information for OS X
   and Windows as a service. (ticket #1495)

2016-05-12 zzz
 * NTP:
   - Don't put random data in zeroed fields
   - Increase random data in originate timestamp from 1 byte to 2 bytes
   - Verify originate timestamp to prevent injection
   - Verify received packet size
 * SSU:
   - If configured with a hostname, bind to all v4/v6
     addresses found for that hostname.
   - Fix binding if more than one IP or host was configured.

2016-05-09 zzz
 * Console:
   - Fix escaping of search URLs on /confighome
   - Fix HTML error on /configui
 * DesktopGui: Add 9 new translations
 * i2psnark: Limit cases when we display tracker errors;
   include host name of tracker when we do

2016-05-08 zzz
 * Console: Fix UTF-8 passwords, partial fix for usernames

2016-05-07 zzz
 * Build:
   - Add DTG to updater
   - Fix and bundle DTG license info
   - Remove jstl.jar and standard.jar from updater,
     last changed in 0.9
   - Fix bundling of Tomcat license info
   - Add back the old way to build bundles for gettext < 0.19
 * Console:
   - Change to new DTG constructor
   - Don't attempt to start systray or DTG when running as a service
   - Show systray controls for all OSes on /configservice
   - Implement backend for systray control
 * DesktopGui:
   - Implement second TrayManager menu implementation in Swing.
   - Use Swing except on Windows
   - Hide restart menu items if no wrapper
   - Add graceful restart and shutdown menu items
   - Add basic adjustment of menu based on shutdown state
   - Disable wrapper notification for now
   - Remove Swing DesktopguiConfigurationFrame,
     move to a submenu.
   - Remove LookAndFeel setting
   - Make Main class a RouterApp
   - Remove all static log, context, and instance fields
   - Remove unused ConfigurationManager class
   - Translate tooltip, disable tooltip on linux
   - Use safer exec call to start i2p
   - Remove all images, use itoopie
   - Don't start spinner thread in router context
   - Handle various startup errors better
   - Synchs, finals, javadocs, cleanups

2016-05-04 zzz
 * i2prouter: Set JAVA_HOME correctly on Mac OS X 10.5 and later (ticket #1783)
 * Utils: Fix bug in periodic timers triggered by
   a backwards clock shift, caused graphs to be blank
   and various router, streaming, and i2ptunnel
   degradations over time (tickets #1702, #1776)
 * Wrapper: Update to wrapper 3.5.29, except for Windows.
   Fixes wrapper failure on FreeBSD 10 (ticket #1118)

2016-05-01 zzz
 * Build: Compile resource bundles from ant, not msgfmt,
   speeding up builds with translations by 20x
 * Debian: Back out libhttpclient-java dependency,
   requires 4.4 which is too recent for most distros

2016-04-30 zzz
 * Blocklist: Add RFC 6598 addresses
 * Console:
   - Only display cpuid information on x86
   - Readme page link fixes (tickets #1789, #1790)
 * Data: Fix NPE calculating the hash of a RI of unknown sig type
 * Debian:
   - Add runtime dependency on libhttpclient-java,
     link to /usr/share/java/httpclient.jar and httpcore.jar
 * Eepsite: comment out gzip filtering in cgi context,
   causes hung threads, root cause unknown
 * Router: Reduce log level of RI sig failure
 * SAM: Log tweaks (ticket #1778)

2016-04-29 zzz
 * Debian:
   - Add runtime dependency on gettext-base,
     link to /usr/share/java/libintl.jar
   - Add runtime dependency on libgetopt-java,
     link to /usr/share/java/gnu-getopt.jar
 * SysTray:
   - Remove systray4j.jar from linux installers
   - Move SysTray.java to SysTrayImpl.java
   - New SysTray.java that instantiates SysTrayImpl
     by reflection, so the SysTrayImpl.java source is optional
   - Remove systray4j.jar, systray4j.dll, and SysTrayImpl.java
     from Debian source packages
   - Remove systray4j.jar from Debian binary packages
 * Update: Enable libjbigi update for ARM

2016-04-28 zzz
 * News: Parse and store CRLs in news feed

2016-04-28 zzz
Prop from i2p.i2p.zzz.gmp6-prop:
 * CPUID:
   - Added source of CPUID information
   - Made CPUIDCPUInfo non-abstract to support looking for
     CPU features during CPU identification
   - Add support for extended feature registers EBX/ECX
   - No such thing as EBX for 0x80000001 call; remove getExtendedEBXCPUFlags(),
     replaced with getExtendedEBXFeatureFlags()
   - Check for support of 6 required Core i3/i5/i7 instructions to enable Haswell,
     since GMP Haswell requires Core i3/i5/i7 support.
     There are Pentium/Celeron Haswells that do not support these instructions.
   - Added AVX, AVX2, AVX512, TBM, ADX, BMI1, BMI2, MOVBE, FMA3 feature detection
   - More diagnostic output in CPUID.main()
   - More javadocs
   - Only call getCPUVendorID() once in getInfo()
   - Recognize Skylake
   - Do the same checks for Broadwell and Skylake that we do for
     Haswell, and check ADX as well, which will be used in GMP 6.1
 * Crypto:
   - Use constant time modPow() for signing and decryption
   - Use native modInverse()
 * libjbigi:
   - Added nativeJbigiVersion(), nativeGMPMajorVersion(),
     nativeGMPMinorVersion(), nativeGMPPatchVersion(),
     nativeModInverse(), nativeModPowCT()
   - Support negative vaules in conversion functions
   - Support negative base value in modPow()
   - Throw ArithmeticException for bad arguments rather than crashing
   - New build targets
   - Drop 32-bit corei libs where they are identical to the
     core2 lib, since we now have a generic fallback in NBI:
     libjbigi-freebsd-corei.so, libjbigi-linux-corei.so,
     libjbigi-osx-corei.jnilib
   - Revamped downloading of gmp files
   - Revamped cross-compilation support
   - Added 'osx' alias for darwin
   - Added FreeBSD cross-compilation instructions
   - Removed NetBSD, kFreeBSD, Solaris, OpenBSD binaries
   - Added coreihwl, coreisbr, bulldozer, steamroller,
     cortex a9, and cortex a15 support
   - Rebuilt all binaries with GMP 6.0.0a
 * libjcpuid:
   - Add nativeJcpuidVersion()
   - Clear ECX register to ensure it will work with EAX=7
   - Added jcpuid build instructions for linux/osx/freebsd/windows
   - Improved build script
   - Imported Microsoft Visual Studio Community 2015 project files.
   - Fixed OSX include search path
   - Rebuilt all binaries
 * NativeBigInteger:
   - Version reporting
   - Total redesign of fallback code
   - core2 is always a fallback for corei, and
     core2_64 is always a fallback for corei_64
   - Remove special case for core2/corei in getMiddleName2()
     since it's now a fallback in getResourceList()
   - Added support for new CPUs:
     Intel Sandy Bridge, Haswell and Broadwell;
     AMD Bulldozer, Piledriver, Steamroller, Excavator and Jaguar;
     ARM Cortex A5/A7/A8/A9/A15; ARM A12/A17 using the A15 libs
   - Test improvements:
     Output versions; Only warmup crypto once;
     Add -n option to test native only;
     Reduce output if only native or only Java tested;
     Try to prevent not-coprime errors

2016-04-26 zzz
 * Addressbook:
   - Finish implementation of signed actions
   - Move HostTxtEntry to net.i2p.client.naming for use by i2ptunnel
   - Add tests for Daemon to read local subscription file
   - Store last-modified date
   - Logging cleanups and consolidation
 * Blockfile: Remove unused code and classes
 * BlockfileNamingService:
   - Implementation and fixes for new API methods
   - Add support for long property values, backward compatbile, no version bump
 * DataHelper: Properties methods cleanup
 * i2ptunnel:
   - New page for registration authentication
   - Remove old, unused hostname signature generation
 * NamingService: Add new API methods for reverseLookupAll()
 * PrivateKeyFile:
   - Add InputStream constructor for i2ptunnel
   - Ensure initialization before returning private keys
 * SusiDNS:
   - Display signature validation on details page
   - Add support for multiple dests per hostname

2016-04-20 zzz
 * Addressbook:
   - Add sign/verify methods for inner signature
   - Add preliminary handling of incoming actions
 * Blockfile:
   - Add generics
   - Add method to change serialization schema for a skiplist
   - Fix delIndex() method
 * BlockfileNamingService:
   - New database version 4, for multiple destinations per hostname
   - Disallow database version higher than supported
 * NamingService: Add new API methods for multiple Destinations per hostname

2016-04-17 zzz
 * Addressbook:
   - Several cleanups and refactoring
   - Add initial support for signatures in subscriptions
   - Fix main-class in addressbook.jar
   - Fix corrupted manifest in addressbook.jar
 * Build: Fix broken build from scratch in jetty build.xml
 * Console:
   - Add JSTL version to /logs
   - Update version warnings
   - Add OpenJDK check for ARM
 * PrivateKeyFile: Add method to specify sig type on creation
 * SingleFileNamingService: Store signature properties on write
 * TunnelId: Add max value check

2016-04-13 zzz
 * SOCKS: Fix NPE on lookup failure in SOCKS 4a

2016-04-07 zzz
 * Debian builds:
   - Prep for depending on tomcat packages
   - Minor fixes

2016-04-04 zzz
 * Debian builds:
   - Depend on glassfish-javaee for JSTL 1.2 by default

2016-04-03 zzz
 * Debian builds:
   - Add build options to depend on various packages
   - Depend on geoip-database and libjetty8-java by default
   - Add debian-alt directory with configurations for alternate series
   - Prep for depending on additional packages
   - Improvements in ant debian build targets
 * Transport:
   - Add library to read standard Maxmind geoip database format
   - Use system Maxmind geoip files if available

* 2016-03-22 0.9.25 released

2016-03-14 zzz
 * Console: Replace pastethis with zerobin
 * Peer selection: Don't truncate data used for random slice
 * Router: Fix corner cases maintaining local leasesets (ticket #1768)
 * Susimail: Fix NPE
 * UPnP: Fix NPE in HTML output on /peers (ticket #1779)

2016-03-01 zzz
 * i2psnark: Fix handling of HAVE messages received before metainfo
 * i2ptunnel: Don't default to a private key file that exists (ticket #1628)
 * NetDb:
   - Search for new leaseset before expiration;
   - Reduce expiration for router infos with introducers
   - Add missing reseed cert
 * SSU: Switch introducers less often

2016-02-26 zzz
 * Console:
   - Add X-Content-Type-Options header everywhere (ticket #1763)
   - Don't display error after clicking restart on /graph page (ticket #1582)
 * i2ptunnel:
   - Fix default shouldBundleReplyInfo for non-HTTP servers
   - Fix display of hostname signature
   - Add QR code generation
 * Router: Log full path to wrapper.log when dumping threads
 * Transports: Increase connection limits for class N and higher
 * Utils: Add main classes to i2p.jar and router.jar
   for simple command line access to utilities

2016-02-22 zzz
 * Console: Improve news CSS (ticket #1710)
 * Crypto: Blacklist certificates by SHA1 hash, not by serial/CN/OU
 * I2CP: Improve client error message when internal router connection fails 
 * Graphs: Increase font size
 * Transports: Increase default max inbound bandwidth,
   increase minimum in/out bandwidths

2016-02-19 zzz
 * Clock: Add sanity checks to detect invalid system clock

2016-02-18 zzz
 * Console: Clean up display and form handling
   for specifying a fixed host name or IP on /confignet
 * Crypto: Add utilities for loading CRLs from disk;
   check for revocation when reading in certificates
 * Transport:
   - Implement mayDisconnect() for outbound connections also,
     use when publishing RI directly to floodfill
   - Run SSU idle disconnect check faster if floodfill or near connection limit
 * NetDB: Fix bug publishing router info too often

2016-02-17 zzz
 * i2psnark: Increase max files per torrent to 2000
 * I2PTunnel: Improve layout of blacklist radio buttons
 * Router: Switch to new lease sooner before expiration
 * SAM: Don't log an error on datagram send success

2016-02-13 zzz
 * I2PTunnel:
   - Add options to block by referer and user-agent
   - Log blocked destinations in b32, not b64
 * Imagegen: Add text to QR codes

2016-02-10 zzz
 * Crypto: Use new internal key generation instead of calling
   out to keytool; save CRL for new su3 amd family keys

2016-02-09 zzz
 * Crypto: Fix raw (su3) signing, broken in test2 prop (-2)

2016-02-08 zzz
 * BOB: Fix invalid output after getnick (ticket #1204)
 * SAM v3.3:
   - Add support for MASTER sessions
   - Add support for per-packet optins SEND_TAGS, TAG_THRESHOLD, EXPIRES, and SEND_LEASESET
   - Refactoring and cleanups
   - Client test enhancements
   - Fix bug receiving datagrams on v3 sessions with UTF-8 session IDs

2016-02-03 zzz
Prop from i2p.i2p.zzz.test2:
 * Build: More checks in release target
 * Console:
   - New /configfamily for export/import and setup (ticket #1510)
   - Custom icons for non-webapp plugins (ticket #1550)
   - Add secure.thethinhat.i2p to console home page and hosts.txt
 * Crypto:
   - Implement EdDSA key encoding and decoding (ticket #1723, github issue #13)
   - Fix I2P crypto provider and add it
   - Specify I2P provider in keytool arguments when necessary
   - Add EdDSA key generator support to provider
   - Synch fix in EdDSA (github issue #10)
   - Add hashCode() and equals() everywhere it was missing in EdDSA
   - Put unknown class name in EdDSA exceptions
   - Implement one-shot methods in EdDSA so we don't copy
     the data if all the data is available (ticket #1750)
   - Fix API violation if EdDSA signing object is reused (ticket #1750)
   - Add ElGamal classes, from Bouncy Castle 1.53, for provider
   - Implement Java ElGamal keys built on the BC classes
   - Add KeyFactory and KeyPairGenerator for ElGamal
   - Add ElGamal signature implementation, to be reviewed
   - KeyGenerator: Check that dsax is greater than zero
   - SHA256Generator: Don't fall back to Sha256Standalone,
     SHA-256 support must now be in the JRE.
     Deprecate all uses of Sha256Standalone, schedule for removal.
     This will require a new Syndie release.
   - New utils to support private key import/export
   - Add support for CRL generation and export
   - Consolidate PEM encoding
   - Improve ASN.1 signature encoding/decoding utilities
   - New selfsigned key and cert generator,
     to be hooked in to KeyStoreUtil to replace keytool.
   - Add EdDSA_SHA512_Ed25519ph sig type
   - Add OIDs to sig types
 * I2PTunnel: Fix exception message choice that was backwards
   for router/non-router context
 * Jetty: Add gzip filter to eepsite Jetty (new installs only)
 * Random: Don't bother trying to seed from /dev/urandom on Windows
 * Router: Make network ID configurable
 * Utils: New ArraySet implementation

2016-02-01 zzz
 * Imagegen:
   - Return 403 if no code specified in QR or RA
   - Mode parameter for html or text in RA
   - Set RA text-mode character encoding
   - Fix up test page

2016-02-01 zzz
Prop from i2p.i2p.zzz.imagegen:
 * Console:
   - New imagegen webapp, including servlets for identicons, QR codes,
     and random art. Bundles a small part of zxing, most of identicon,
     and a rewrite of randomart from gnutls (ticket #1652)
   - Add identicons to sybil page.
 * i2ptunnel: Add identicons to i2ptunnel address helper conflict page.
     Clean up text on the conflict page for readability.
 * SusiDNS:
   - Display QR and identicon images on details page
   - Fix title whitespace

* 2016-01-27 0.9.24 released

2016-01-27 zzz
 * SocksHeader: Fix arraycopy argument order
 * SSU: Fix minimum version for extended options

2016-01-20 zzz
 * SusiDNS: Replace image (ticket #1301)

2016-01-17 zzz
 * BuildHandler: Disable tunnel removal on next-hop timeout
 * Console:
   - Fix mime type for svg in themes directory
   - Add zh_TW translation
 * Fortuna: Add getByte() method
 * i2psnark: add opendocument mime types
 * i2ptunnel: Remove unused stats
 * Utils: Move CachedIteratorArrayList from core to router

2016-01-13 zzz
 * BuildHandler: More early-disconnect cases
 * Family: Add i2p-dev cert

2016-01-10 zzz
 * Tunnels: Fix build request Bloom filter (ticket #1746)

2016-01-07 zzz
 * Console: Fixed summary bar overflow (ticket #1739)

2016-01-06 zzz
 * Build: Remove big geoip files from release again
 * Console: Properly register listen hosts with PortMapper
 * DataHelper: Optimize checks in storeProps()
 * I2PTunnel: Fixup console links in error pages if console is
   on a non-standard host or port, or on https
 * Jetty: Change default source logging from b64 to b32.
   To change back to b64, add the following to the RequestLogImpl
   section of jetty.xml: <Set name="b64">true</Set>
 * NetDB: Don't query floodfills if they are too old to
   support sig types or encrypted replies (ticket #1742)
 * PortMapper: Add method to convert wildcard host to actual host

2015-12-21 zzz
 * SSU: Hand all messages pending after establishment to the
   outbound queue at once, for efficiency.
   Don't sort outbound messages by size, keep priority order instead.

2015-12-20 zzz
 * BuildHandler: Additional fixes (ticket #1738)
 * CertUtil: Add methods to export private keys
 * Console: Sybil tool enhancements
 * Transports:
   - Disconnect faster when first message is a
     tunnel build request which we reject
   - Display SSU sent/received messages, not packets,
     on /peers to be consistent with NTCP

2015-12-18 zzz
 * BuildHandler: Fix NPE (ticket #1738)

2015-12-16 zzz
 * Profiles:
   - Don't use same family in a tunnel
   - Reduce IPv6 mask from 8 to 6

2015-12-13 zzz
 * Data: Optimize router info writes, disable caching

2015-12-12 zzz
 * Router:
   - Add family public key to router info (ticket #1510)
   - More deadlock prevention (ticket #1722)

2015-12-11 zzz
 * Logs: Windows line ending fixes
 * Router:
   - Fix family verification, partially hook into netdb store()
   - Limit wait for NTP to 45 seconds (ticket #1725)
   - Increase lookup cache max sizes,
     reduce max lookup depth, and increase non-floodfill profile bonus
     to attempt to reduce load on floodfills
   - Don't let context clock shifts affect calculated uptime
 * Transport: More deadlock prevention (ticket #1722)
 * SSU: Fix outbound IPv6 errors on Windows without a real v6 address
   when explict host is set. Validate addresses before confirming that
   we have an IPv6 address. Possibly related to ticket #1538.
 * Wrapper: Listen for Windows Service shutdown events to stop router

2015-12-10 zzz
 * Router:
   - Change addCapabilities() to getCapabilities()
   - Add netdb family sign/verify utility (ticket #1510)
 * RouterInfo:
   - Remove addCapability() and delCapability()
 * StatPublisher:
   - Remove Service interface, not required
   - Consolidate getCapabilities() and network ID here
   - Add family signatures

2015-12-08 str4d
 * Core: Fill in basic datastructure length tests
 * Ministreaming: Add unit tests
 * Streaming:
   - Add more unit tests
   - Separate out integration tests

2015-12-08 zzz
 * Crypto: Consolidate certificate import methods

2015-12-06 zzz
 * Console: Don't force profile creation when loading floodfill tab
 * Installer: Add wrapper deadlock detection to default wrapper.config
 * NetDb: Stub out a "family" indicator (ticket #1510)
 * Profiles: More changes to reduce memory usage
 * Startup: Increase rekey probability
 * Sybil tool: Tweaks and enhancements

2015-12-04 zzz
 * Console: Fix NPE on /profiles
 * Profiles:
   - Fix first heard about to be earliest, undeprecate
   - Fixup first heard about at profile readin
   - Persist good/bad lookup/store DBHistory stats added in 0.7.8
   - Remove unused DBHistory methods and fields to save memory
   - Change bonus longs to ints to save memory
   - Extend profile expiration time from 3 days to 15
   - Consolidate getLong()
   - Synch fixes
 * Sybil tool: Tweaks and enhancements

2015-12-03 zzz
 * Console: Add experimental Sybil analysis tool
 * NetDb: Fix deadlock (ticket #1722)

2015-12-01 zzz
 * i2psnark:
   - Consolidate default tunnel length definition
   - Increase max peers and uploaders per torrent
   - Increase default max total uploaders
   - Increase max peers sent and returned in DHT
 * SAM:
   - Don't map keys to upper case in parser, corrupts I2CP options
   - Register SSL and UDP ports with PortMapper
 * SSU: Allow IP and port in relay request if it matches the source
 * Transport: Interrupt DH refiller thread when pool is empty,
   to speed refilling and reduce pumper stalls

2015-11-30 zzz
 * SAM:
   - Timeout for first command after HELLO
   - Send error message if no NAME key in LOOKUP
   - Destination caching enhancements
   - Client: Add SSL forward support, handle header line in forwarded stream

2015-11-29 zzz
 * i2ptunnel:
   - Change preferred sig type to Ed
   - Set permissions on backup tunnel keys file

2015-11-28 zzz
 * i2psnark:
   - Fix NPE caused by URL-to-URI conversion in -2 (ticket #1715)
   - Increase max pieces to 32K
   - BEP 21 support (upload_only)
 * SAM:
   - Fix parser to allow spaces in quoted values (tickets #1325, #1488)
   - Handle UTF-8 in ReadLine (ticket #1488)
   - 3.2 complete (ticket #1574)

2015-11-27 zzz
 * SAM:
   - Use DataHelper to load/store sam.keys
   - Move sam.keys to config dir (ticket #677)

2015-11-27 zzz
Prop from i2p.i2p.zzz.sam:
 * PasswordManager: new methods for use by SAM
 * SAM:
   - Use getopt for SAM args processing
   - Change default host from 0.0.0.0 to 127.0.0.1
   - Add SSL support with -s option (ticket #1106)
   - Add -c configfile option, default sam.config
   - Add protocol and port notification (ticket #1323)
   - Add authorization options in HELLO (ticket #1106)
   - Add AUTH commands: ENABLE, DISABLE, ADD, REMOVE
   - Add PING, PONG commands (tickets #1572, #1573)
   - Add QUIT, STOP, EXIT commands
   - Add SSL option for STREAM FORWARD
   - Move DatagramServer from SAMv3Handler to its own file
   - Make DatagramServer a Handler, register with bridge
   - Use ReadLine with timeout for SAMHandlerFactory
   - Support parallel STREAM ACCEPTs
   - Add HEADER option for RAW forwarding
   - Better exception handling
   - Extensive enhancements to Java client for testing
   - Bump version to 3.2 (ticket #1574)
 * Streaming: Fix recognition of PoisonPacket in ConnectionHandler

2015-11-22 zzz
Prop from i2p.i2p.zzz.test2:
 * Build:
   - More release checks
   - Add systray dependency tracking to build
   - Remove commons-logging classes from commons-logging.jar (ticket #1679)
 * Lint:
   - Replace URL with URI where possible
   - Don't use DataHelper.fromLong() for 1-byte reads, for efficiency
   - Don't catch Exception, catch RuntimeException or checked exception.
 * i2psnark:
   - Minor details page reformatting
   - Add skipped length on details page
 * NewsManager: Make it a ClientApp, not a RouterApp
 * Profiles: Don't allow creation of our own profile
 * Router: Revert JobTiming being a clock shift listener, not needed
 * SSU:
   - Support extended options
   - Add support for requesting a relay tag via
     Session Request extended options (tickets #1465, #1656)
 * Tunnels:
   - Locking fixes
   - Don't set stats in our own profile
   - Minor optimizations
 * Utils:
   - Centralize time zone code in DataHelper
   - Add caching string split()

2015-11-21 zzz
  * Console: Fix escaping of plugin description on /configclients (ticket #1711)

* 2015-11-19 0.9.23 released

2015-11-19 str4d
  * build.xml: Stop building SUD and SU2 update files in "ant release" (ticket #1709)

2015-11-15 kytv
 * Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country
   database from 2015-11-03.
 * Translation updates

2015-11-13 zab
 * Interrupt() when cancelling scheduled tasks (tickets #1694, #1705)

2015-11-13 zzz
 * Console: Fix lifetime participating bandwidth display (ticket #1706)

2015-11-12 zzz
 * Console /configclients:
   = Fix filtering and escaping
   - Fix autostart setting on new client, was inverted

2015-11-11 zzz
 * i2psnark:
   - Change log level to hide socket closed error at tunnel shutdown (ticket #1687)
   - Increase max pieces
 * Timers: State fix 4th try (tickets #1694, #1705)

2015-11-05 zzz
 * I2CP: Fix additional connections getting rejected during tunnel open (tickets #1650, #1698)
 * Streaming: Split blacklist into one for EC and one for Ed

2015-11-04 zzz
 * Threads: More conversions to I2PAppThread
 * Timers: Improve OutboundMessageRegistry locking (ticket #1694)

2015-11-02 z3r0fox
 * EepGet: Fix command line filename selection (ticket #1616)

2015-11-01 zzz
 * Utils: Double IP lookup cache size (ticket #1700)

2015-10-31 zzz
 * Convert remaining Threads to I2PThread or I2PAppThread
 * UPnP: Fix deadlock in callbacks (ticket #1699)

2015-10-30 zzz
 * Router: Fix cascading I2CP error (ticket #1692)

2015-10-21 zzz
 * i2psnark: More consistency and torrent links in messages
 * Router: Increase timer thread priority

2015-10-17 zzz
 * Crypto:
   - Consolidate duplicate unlimited strength crypto check code
   - Disable TLS_DHE_DSS_WITH_AES_128_CBC_SHA

2015-10-16 zzz
 * Console: Add Java 6 warning to summary bar
 * i2psnark:
   - Fix deadlock (ticket #1432)
   - Add "smart sort" option, set sort based on language (tickets #637, #1303)
   - Don't balloon files on ARM (ticket #1684)

2015-10-14 zzz
 * Update:
   - Require Java 7 to download dev builds (ticket #1669)
   - Fix persistence of the available dev version

2015-10-13 zzz
 * Startup: Delete our old RI from netDB when rekeying

2015-10-11 zzz
 * Crypto: Test for broken Gentoo ECDSA support

2015-10-10 zzz
 * i2psnark: Increase max piece size to 16 MB, max files to 999,
   close files faster based on file count (tickets #1626, #1671)
 * JobQueue: Only adjust timing for negative clock shifts
 * NamingServices: Add support for lookups prefixed with "www."
 * Startup: Increase rekey probability

2015-10-08 zzz
 * SimpleTimer2: Additional fix for uncaught IllegalStateException
   affecting streaming timers (ticket #1672)

2015-10-02 zzz
 * Router: Don't check config files for reload on Android

2015-09-28 zzz
 * Addressbook: Fix isValidDest() for EC/Ed dests
 * i2psnark: Support adding plain base 32 hashes
 * Susimail: Hide headers and buttons if search results are empty

2015-09-27 dg
 * Router: Fix soft restarts for 'massive' clock jumps (over +150s or -61s) and recover from standby
   and hibernate (ticket #1014).

2015-09-27 zzz
 * Console:
   - Export SSL cert on creation
   - New /certs page to show local SSL certs
   - Show 'none' if no leasesets
 * SimpleTimer2: Fix bug in forceReschedule() that caused subsequent uncaught IllegalStateException,
   affected streaming timers
 * Streaming: Move throttler from context timer to streaming timer
 * Tunnels: Use max of 2 not-failing peers in an exploratory tunnel,
   use high cap for the rest; change outbound exploratory
   default length from 2 + 0-1 to 3+0.
 * Util: Speed up IP address validation by using Apache's implementation (ticket #1198)

2015-09-25 dg
 * Rename _() for translation to _t() for Java 9 compatibility (ticket #1456)

2015-09-24 zzz
  - Rename bad .torrent files instead of deleting them

2015-09-20 dg
 * /configreseed: Add 'Reset URL list' button for revert to default hosts (ticket #1554, thanks dzirtt@gmail.com)

2015-09-19 zzz
 * i2psnark: Add recheck/start/stop buttons to details page (ticket #372)

2015-09-18 zzz
 * EepGet:
   - Send Accept-Encoding: gzip even when proxied
   - Fix man page (ticket #1631)
 * i2psnark:
   - Don't display "Tracker Error" if torrent is stopped (ticket #1654)
   - Improve directory listing efficiency (ticket #1079)
 * i2ptunnel:
   - Pass Accept-Encoding header through HTTP client and server proxies,
     to allow end-to-end compression
   - Don't do transparent response compression if response
     Content-Encoding indicates it is already compressed
 * Streaming: Move remaining timers from the context to streaming's SimpleTimer2

2015-09-17 zzz
 * i2psnark:
   - Store magnet parameters across restart (ticket #1485)
   - Don't delete torrent config file after error on initial startup (tickets #1575, #1658)

2015-09-16 zzz
 * Build:
   - Include geoip in update files for next release
   - Add created-by string to release torrents
 * i2psnark:
   - Store torrent added and completed times in config files, display on details page
   - Add metainfo creation command line support for created-by string
 * Profiles: Bias slightly away from floodfills

2015-09-15 zzz
 * Console:
   - Store news feed items separately on disk in XML, like a real feed reader
   - Limit display to 2 news items in summary bar, /home and /console
   - New /news page to show all news (ticket #1425)

* 2015-09-12 0.9.22 released

2015-09-11 kytv
 * Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country
   database from 2015-09-02.
 * Translation updates pulled from Transifex

2015-09-04 zzz
 * UPnP: Fix "content not allowed in trailing section"
   (tickets #481, #1653)

2015-08-31 zzz
 * Data: Cache P256 and Ed255i9 key certificates
 * i2psnark: Change default sig type to Ed25519

2015-08-29 zzz
 * Router:
   - Change default RI sig type to Ed25519, with a 10% chance od
     rekeying from DSA at each restart
   - Don't initialize KeyManager before selecting sig type
   - Don't log KeyManager error when changing sig type

2015-08-25 zzz
 * i2psnark:
   - Return partial piece to coordinator after reject
   - Fix tracking of downloaded portion of piece after reject
   - Send reject on receipt of bad request
   - Mark piece unrequested after receiving bad data, so it
     will be requested again, but not from the same peer
   - Fix NPE in Request constructor on error
   - Fix stuck before completion due to reject handling (ticket #1633)
   - Fix orphaned temp files due to reject handling (ticket #1635)

2015-08-02 zzz
 * Console: Fix SSL excluded ciphers (thx lazyg)
 * SU3File: Add keystore password command line option

* 2015-07-31 0.9.21 released

2015-07-27 zzz
 * Update: Fix processing of translated news su3 files

2015-07-26 zzz
 * Update translations

2015-07-25 zzz
 * i2psnark: Fix total_size in metadata message (ticket #1618)
 * NetDB: Fix NPE (ticket #1619)

2015-07-21 str4d
 * Core: Throw DFE in Certificate.create() instead of AIOOBE (ticket #1016)

2015-07-21 str4d
 * Core: Fix parsing bug in KeyCertificate

2015-07-16 zzz
 * Console: Add dates to news headings

2015-07-12 zzz
 * Findbugs all over

2015-07-08 zzz
 * Tunnels: New Bloom filter size, increase bandwidth limit (ticket #1505)

2015-07-07 zzz
 * Crypto: Check for error return from sign()
 * i2psnark: Tweak dest display in footer
 * Streaming: New config to add to DSA-only list
 * Updates: New news URL

2015-07-05 zzz
 * SSU: Compete better with NTCP for outbound bandwidth allocations
 * Transport: Adjust thread priorities to prevent I/O stalling

2015-06-29 zzz
 * Transport: More fixes for SSU stalling

2015-06-28 zzz
 * Apache Tomcat 6.0.44

2015-06-25 zzz
 * Console: Use registered host/port for eepsite link (ticket #1604)
 * Jetty starter: Register host/port when started
 * PortMapper: Add hostname support

2015-06-24 zzz
 * Transport: Add failsafe to prevent complete SSU stall waiting
   for bandwidth limiter

2015-06-23 zzz
 * Console: Fix NPE on /configtunnels
 * GeoIP: Add countries and flags for Asia/Pacific, Bonaire, St. Barts,
   St. Maarten, South Sudan
 * I2CP: Don't try to decrypt an LS before it's encrypted (ticket #1608)
 * Router: Increase default outbound bandwidth to 60 KBps;
   raise class L/M boundary to match so defaulted routers are still L

2015-06-22 dg
 * NetDB: Partially revert last NetDB change: flood because we don't want
   to create a hole in the DHT before publisher resends to somebody else.

2015-06-20 dg
 * I2PSnark: Auto-start now only starts torrents which were running at shutdown (#766)
 * NetDB: Don't say we stored, and don't flood, if we're shutting down

2015-06-19 zzz
 * I2CP: Fix simple session lookups, broken in prop
 * I2PSocketEepGet: Do hostname lookups in-session for efficiency
 * Tunnels: Increase default max tunnels

2015-06-18 zzz
 * I2CP:
   - Don't send the first LS request to the client until we have
     at least one OB tunnel, so the client waits until we are ready.
   - Fixes to prevent multiple pending LS requests
   - Move client-side implementation classes to
     new package net.i2p.client.impl, leaving only the
     factories and interfaces in net.i2p.client
 * Update: Add language param to news fetch for translated news (ticket #1425)

2015-06-17 zzz
Prop from i2p.i2p.zzz.multisess:
 * Router, I2CP, Streaming, i2ptunnel:
   - Multisession support and multiple destinations in one tunnel pool
   - Connections to Hardcoded blacklist of destinations that do not
     support ECDSA will use the DSA session
   - Change shared clients to ECDSA by default, with a DSA subsession
   - Add support for 'aliased' local destinations that use the same tunnel pools
   - No UI or config support, no server support, may be added later
   - Catch uncaught exceptions in ClientConnectionRunner and stop connection
   - When socket is closed, set sessionID and LS to null,
     close subsession and set its sessionID and LS to null
   - Checks on client side for null session ID
   - Check for null session in Destroy Session message

2015-06-13 zzz
 * i2psnark: Fix NPE (ticket #1602)
 * NetDB:
   - Improve routing of DatabaseStoreMessage acks
   - Send our own RI unsolicited in reply if we aren't floodfill
   - Don't ack or flood a store of an unknown type
   - Don't say we stored, and don't flood if we're shutting down
 * PeerTestJob: Don't generate zero reply token
 * Timestamper: Reduce NTP timeouts to shorten startup time
   when NTP is blocked
 * Tunnels: More checks of messages received down exploratory tunnels

2015-06-08 dg
 * Language fixes
 * Make netDb.storeFloodNew graphable for testing (#1195)
 * Directly connect to nearby floodfills to share our RI
   to speed up integration of new floodfills (#1195)
 * Silence Irc{Inbound,Outbound}Filter warnings about 'no streams'
   when we can't connect to an IRC server. Change to WARN.

2015-06-07 zzz
 * Logs: Correct wrapper.config location when running as a service
 * NetDB: Fix early NPE
 * SSU: Possible fix for NPE in establisher

2015-06-06 zzz
 * Console: Add indication of current ff status on /configadvanced,
   change immediately when config changes, force republish

2015-06-06 str4d
 * newsxml: Don't use XXX for parsing dates on Android

2015-06-04 str4d
 * i2ptunnel:
   - Don't connect manager to router in constructor (ticket #815)
   - Don't call startup() in chained constructor (ticket #1593)

2015-06-03 zzz
Prop from i2p.i2p.zzz.sam:
 * I2CP: Set keepalive on sockets (ticket #1573)
 * SAM:
   - Close sockets and stop tunnels when router-side SAM stops (ticket #1572)
   - Better checks for quoting status message strings (ticket #1488)
   - Set encoding for sam.keys file
   - Don't throw NPE on rare stream errors
   - Comment out unused dumpProperties()
   - Cleanups, log tweaks, thread name tweaks
   - Set keepalive on sockets (ticket #1573)
Prop from i2p.i2p.zzz.test2:
 * Console:
   -  Don't allow unbanning of all-zero hash
   -  Nicer "move" icons on /configsidebar, add tooltips
   -  Prevent bad line-wrap of very long menu items
 * HTTP Client: Greatly simplify decompression by using InflaterOutputStream
 * I2CP: Prevent sending messages before handshake with router is complete
 * i2psnark:
   - Add support for fast extensions (BEP 6)
   - Don't say 'download finished' unless we downloaded something
   - Don't lose sort param when hiding peers
 * i2ptunnel: Strip top-level supercookies too
 * LogWriter: Write dup message to wrapper log and crit buf also (ticket #1585)
 * Reseed: Only log reseed network disconnected warning once
 * Router: Add gzip and translate caches to clearCaches()
 * Susidns, addressbook: Don't attempt to fetch subscriptions if
   HTTP proxy is down (ticket #1530)
 * SSU: More synchronization in PeerState
 * Stats: Reduce number of rates in required stats to save memory
 * UPnP: Only log network disconnected warning once

* 2015-06-02 0.9.20 released

2015-05-31 zzz
 * Fortuna: Catch AIOOBE (ticket #1576)

2015-05-30 zzz
 * i2ptunnel: Fix +/- variance config (ticket #1587)

2015-05-29 zzz
 * HTTP client: Fix occasional truncation of compressed responses

2015-05-27 zzz
 * Banlist: Ban all-zero hash
 * DataHelper: Add year output to formatDuration()
 * Graphs: prevent NaNs if we are skewed ahead of system time
 * NetDb: Drop all-zero lookups and stores, add stats
 * SSU:
   - Fix debug logging of dumped packets
   - Drop sessions with bad clock skew, banlist peer, add stats
   - Drop sessions with corrupt DSM, banlist peer, add stats

2015-05-23 zzz
 * I2CP: Add an INIT state for session, so a newly created session
   isn't treated as CLOSED and immediately replaced by i2ptunnel,
   which caused dup shared clients in a race at startup
   (possible related tickets #642, #650, #815, #1545)

2015-05-21 kytv
 * Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country
   database from 2015-05-06.
 * Translation updates

2015-05-13 zzz
 * Console: Fix URLs caught in XSS filter on /confighome (ticket #1569)
 * i2psnark: Fix deletion of single-file torrent outside snark dir (ticket #1544)
 * NTCP: Catch race in Reader (ticket #1534)

2015-02-12 dg
 * Job Queue/stats: add stat/graph for amount of scheduled jobs (router.tunnelBacklog)
 * FloodfillMonitorJob:
   - Use avg of router.tunnelBacklog instead of current backlog
 * Some language/spelling fixes

2015-05-11 zzz
 * Util: Fix corruption of cached ReusableGZIPInputStreams

2015-05-09 zzz
 * i2ptunnel: Improve error handling in UDP tunnels
 * Plugins: Add support for custom icons (ticket #1550)

2015-05-08 zzz
 * Reseed: Don't reseed while shutting down (ticket #1565)

2015-05-07 zzz
 * SAM: Close datagram or raw session when underlying
   I2P session closes (tickets #1455, #1563)
 * Update: Add support for su3-signed development builds (ticket #1381)

2015-05-06 zzz
 * Datagram: Convert IOE to DFE and throw on error (ticket #1562)
 * Naming services: Export address books with Windows
   line endings on Windows (ticket #1557)
 * Transport: Add config to force IPv4 (only) to firewalled (ticket #1541)

2015-05-04 zzz
 * i2ptunnel:
   - Close input stream when HTTP client decompressor
     terminates (ticket #1506)
   - Add Connection: close headers to errors and proxy.i2p responses
     where it was missing (ticket #1531)

2015-05-03 zzz
 * Console: Add floodfill configuration form to /configadvanced
 * Router: Allow class M to become floodfill;
   add bandwidth classes P and X (ticket #1447)
 * SusiDNS: Add export button

2015-05-02 zzz
 * Console: Fix Indonesian translations
 * Jetty 8.1.17.v20150415
 * Transports: Cleanup of ticket #1458 fixes

2015-04-30 zzz
 * Transports: Correctly handle IPv4 firewalled, IPv6 not (ticket #1458)

2015-04-29 zzz
 * Clock: Make forward slewing work better
 * I2CP: Periodically send a SetDate message to external clients
 * Transports:
   - Fix clock skew calculations
   - Track IPv4/v6 reachability separately (ticket #1458)

2015-04-28 zzz
 * JobQueueRunner: Don't call System.exit() on OOM,
   let the shutdown progress normally;
   Make it an I2PThread instead of a Runner so we can
   call fireOOM() for consistent logging (ticket #1549)
 * Router: Don't add OOM listener on Android so
   we don't hang onto the context

2015-04-27 zzz
 * NamingService: Add export methods
 * SusiDNS: Add export support, no UI yet
 * Transports:
   - Convert internal state to enums, prep for tracking
     IPv4/v6 reachability separately (ticket #1458)
   - Don't set TCP keepalive for IPv6

2015-04-26 zzz
 * i2ptunnel: Reduce sleep time in runners to reduce latency

2015-04-25 zzz
 * I2PSSLSocketFactory: Add hostname verification
 * SSLEepGet:
   - Rework recent setSoTimeout code changes, as they broke SNI
   - Add option to save certs even if no errors
   - Add option to disable hostname verification

2015-04-24 zzz
 * Util: Catch and convert OOM in I2PThread.start()
 * i2ptunnel:
   - Fix Socks and SocksIRC tunnels not starting
   - Fix shutdown of client tunnels on server socket errors,
 * Updates: Fail fast if HTTP proxy is not running (ticket #1530)

2015-04-23 zzz
 * Streaming:
   - Reduce min RTO for quicker recovery after packet loss
   - Reduce default initial ack delay
   - More efficient checking for input buffer overflow

2015-04-22 zzz
 * i2psnark: Fix deletion of config files, cleanup old ones (ticket #1498)
 * I2PSocketEepGet: Fix i2psnark NPE caused by -6 (ticket #1543)
 * NTCP: Reduce min send finisher threads to 1
 * PortMapper: Status output for /debug

2015-04-21 zzz
 * i2ptunnel: Log uncaught errors in thread pool
 * Reseed: Disable non-su3 reseeding
 * Router timestamper:
   - Add country-to-continent mapping
   - Add continent zones as fallback
   - Don't start threads in constructors
 * Transports: Reduce idle timeouts

2015-04-20 zzz
 * Blockfile: Unroll recursive initialization
 * EepGet: Set soTimeout for non-proxied fetches to enforce
   header timeout and prevent long reseed hangs
 * Reseed:
   - Honor SSL/non-SSL setting when custom reseed list is set (ticket #1136)
   - Remove all default HTTP URLs (ticket #1514)

2015-04-17 zzz
Prop from i2p.i2p.zzz.test2:
 * Console: Set session cookies to HttpOnly
 * i2psnark: Remove extra mime types in i2psnark web.xml;
   added to Jetty's default by now, or in our mime.properties file
 * i2ptunnel:
   - Send HTTP server port 443 traffic to the server
     transparently, to support HTTPS over the same tunnel, if so configured
   - Add check for total header size in HTTP server
   - Return specific error pages to client on errors
     in HTTP header processing in the HTTP server (ticket #1507)
 * Jetty:
   -  Add extensive help to jetty-ssl.xml
   -  Set session cookies to HttpOnly in all webapps
 * JobQueue: Make number of runners configurable
 * Router: Move update extraction code to new class in tasks/
 * Tunnels:
   - Add bloom filter warning if high bandwidth but low memory
   - Add new Bloom filter size, increase bandwidth limit (ticket #1505)
   - Add config to disable Bloom filter for testing

2015-04-16 zzz
 * I2CP: Run DistributeLocal jobs inline (ticket #1506)
 * i2psnark: Increase max tunnels to 10
 * i2ptunnel: Don't start tunnels in constructors (ticket #815)
 * NetDB: Reduce max search depth
 * Transport: Fix active peer count for NTCP

2015-04-15 tuna
 * SimpleScheduler: Deprecated, functionality moved to SimpleTimer2 (ticket #1069)

2015-04-13 zzz
 * Router: Fix NPE on bad share bandwidth config (ticket #1524)
 * Streaming: Handle reset packets without a FROM field, validate
              signature using connection's destination
 * Update: Don't log an error for the "dummy" updater (ticket #1525)

* 2015-04-12 0.9.19 released

2015-04-11 zzz
 * Updates after review

2015-04-09 kytv
 * Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country
   database from 2015-04-07.
 * Translation updates

2015-04-05 zzz
 * IRC Server: Better timeout handling reading initial lines (ticket #723)

2015-04-04 zzz
 * i2ptunnel:
   - Better timeout handling when reading headers in HTTP server (ticket #723)
   - Fix NoSuchElementException processing proxyList caused by 03-31 checkin
 * Streaming:
   - Fix read timeout on input stream (ticket #723)
   - Fix read() returning 0 instead of -1 on read timeout (ticket #335)

2015-04-03 zzz
 * i2ptunnel: Fix stopping tunnel on bad args when starting
 * wrapper.config: Remove old mortbay Jetty parameters

2015-04-01 zzz
 * I2CP: Allow larger client clock skew (ticket #1503)
 * i2psnark: Fix changing data directory on Windows (ticket #1503)

2015-03-31 zzz
 * API: Fix some client-side APIs to honor defaults in Properties;
   add javadocs to specify where we do and don't (ticket #1491)
 * i2ptunnel: Fix multiple SSL outproxies in HTTP client

2015-03-29 zzz
 * I2CP: Prevent NPE (ticket #1503)

2015-03-25 zzz
 * i2ptunnel HTTP client: Replace all getBytes() calls
   with a Writer or getBytes("UTF-8") (ticket #457)

2015-03-24 zzz
 * Streaming: Throw I2PSocketException when connection is reset,
   display new error page in HTTP client (ticket #643)

2015-03-23 zzz
 * Javadoc: Add missing package.html files (ticket #1109)
 * Summary bar: linkify news headings, remove 'show news' link

2015-03-22 zzz
 * Console: Better status feedback on manual reseed from URL
 * NetDB: Don't become floodfill w/o ECDSA support
 * Reseed: Better status feedback and cleanup in summary bar

2015-03-21 zzz
 * Console: Support plugin installation from local file

2015-03-20 zzz
 * Reseed:
  - Move multipart form support from susimail to jetty-i2p.jar
    so console can use it
  - Finish manual reseed from local file

2015-03-19 zzz
 * Reseed (ticket #1369):
  - Add form to manually reseed from zip or su3 URL
  - Add form to manually reseed from local zip or su3 file
  - Add form to create reseed zip file to share
  - Backend support and refactoring in reseed code

2015-03-18 zzz
 * NetDB:
  - Send exploratory lookups directly to the floodfill if
    we are already connected to him
  - Don't encrypt RI lookups when overloaded
  - Don't explore when overloaded
  - Don't publish non-ff RI on exit if we are coming right back
 * Router: Allow disabling the setting of some System properties, for embedded applications
 * StatisticsManager: Publish dummy LS count if we just started
 * Streaming: Reduce min RTO again
 * Tunnels: Drop instead of reject requests on high job lag
 * UPnP: Update to cyberlink 3.0

2015-03-16 zzz
 * Apache Tomcat 6.0.43
 * NetDB: Send RI lookups directly to the floodfill if
   we are already connected to him
 * Router:
   - Republish RI early if capabilities change
   - Increase exploratory tunnel quantity if floodfill
 * Throttle: Reject tunnels based on job lag

2015-03-15 zzz
 * Job Queue:
   - Fix overload dropping
   - Add drop count to job stats
   - Decrease overload threshold again
 * NetDb: Track flood success

2015-03-13 zzz
 * i2psnark:
   - Auto-reduce tunnel quantity based on peer count
   - Increase max tunnels
 * Job Queue:
   - Drop garlic message decryption jobs on overload
   - Decrease overload threshold

2015-03-13 dg
 * Router: create router.integratedPeers (floodfills) stat, and 
   allow graphing of it.

2015-03-08 zzz
 * i2psnark: Increase min and default bandwidth
 * Throttle: Tweak messages during probabalistic rejection
 * Transport: Add missing bogons to IP validity check

* 2015-02-22 0.9.18 released

2015-02-18 kytv
 * Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country
   database from 2015-02-04.

2015-02-15 dg
 * FloodfillMonitorJob: 
   - Use lifetime average value for job lag
   - Change the job lag limit to less than 25ms
   - Consider and set the limit of backlogged tunnels to less than 5

2015-02-10 dg
 * I2PSnark, Jetty, SAM, crypto: findbugs resource leaks.

2015-02-07 zzz
 * SSU: Limit range for valid clock skew
 * Transport: Ban routers if they are too old and we are non-DSA

2015-02-06 zzz
 * NetDB: Reduce max job lag for floodfill
 * NTCP: Block IP for a while when incoming connection is dropped before
   receiving a message. Possible workaround for tickets #551, #1075, #1411.
 * Transport:
   - Decrease DH refiller initial delay and increase buffer size
     to reduce chance of running out on high-bandwidth routers
   - Add event log for reachability change

2015-02-01 zzz
 * Crypto: Catch IAE in generateCertificate()
 * NetDB: Don't flood an RI back to itself. While Java ffs self-flood,
   other implementations may not.
 * OCMOSJ: Pick a OB tunnel at random, not with the OBEP closest
   to the lease, as that may be hurting connection reliability.
 * Router: Call warmupCrypto() earlier in the initialization

2015-01-31 zzz
 * Console:
   - Don't display invalid IPv6 addresses as options on /confignet
   - Disable changing log path
 * NetDb:
   - Encrypt lookups for 32-bit x86 also
   - Disable floodfill in laptop mode
 * PRNG: Don't hang forever at startup waiting for SecureRandom init
 * Transport: Set 4 MBps max bw due to bloom filter

2015-01-30 zzz
 * HTTP Proxy: More error page changes
 * NTCP: Throttle event pumper if looping too fast (tickets #551, #1075, #1411)

2015-01-29 zzz
 * SSU:
   - Fix replaceExternalAddress churn when firewalled
   - Sort introducers in router address, so we won't force a republish
     due to a different ordering of the same introducers
   - Don't publish an address if we need introducers but don't have any,
     so the user won't see a 'firewalled with inbound NTCP enabled' message
   - Fix transition from firewalled to non-firewalled


----------------

EARLIER HISTORY IS AVAILABLE IN THE SOURCE PACKAGE"