- 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
Console:
- Change to new DTG constructor
- Don't attempt to start systray or DTG when running as a service
I2PTunnel: Fixup console links in error pages if console is
on a non-standard host or port, or on https
PortMapper: Add method to convert wildcard host to actual host
- Enable new NewsManager to load/store feed items on disk by UUID
- News items are stored forever, not lost when they are removed from feed
- News read in once at startup, not at every summary bar refresh
- Convert old initialNews.xml and news.xml to NewsEntry format
- Limit display to 2 news items in summary bar, /home and /console
- New /news page to show all news
Switch back to QueuedThreadPool (ticket #1395)
In Jetty 5/6, the default QTP was not concurrent, so we switched to
ThreadPoolExecutor with a fixed-size queue, a set maxThreads,
and a RejectedExecutionPolicy of CallerRuns.
Unfortunately, CallerRuns causes lockups in Jetty NIO.
In addition, no flavor of TPE gives us what QTP does:
- TPE direct handoff (which we were using) never queues.
This doesn't provide any burst management when maxThreads is reached.
CallerRuns was an attempt to work around that.
- TPE unbounded queue does not adjust the number of threads.
This doesn't provide automatic resource management.
- TPE bounded queue does not add threads until the queue is full.
This doesn't provide good responsiveness to even small bursts.
QTP adds threads as soon as the queue is non-empty.
QTP as of Jetty 7 uses concurrent.
QTP unbounded queue is the default in Jetty.
So switch back to QTP with a bounded queue, which does what we want,
which is first expand the thread pool, then start queueing, then reject.
ref:
http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.htmlhttps://wiki.eclipse.org/Jetty/Howto/High_Load
Consolidate KeyStore code from SSLEepGet, I2CPSSLSocketFactory,
SSLClientListenerRunner, and RouterConsoleRunner into new
KeyStoreUtil and CertUtil classes in net.i2p.crypto (ticket #744)
- Prep for ClientApp interface by storing context in a field,
shuffle around what's static and what's not
(ticket #347)
- Remove ports from port mapper on shutdown, other changes to
track actual ports better
(ticket #731)
- Hook in password manager using MD5, untested.
(ticket #731)