* Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
rather that every 15 minutes, and increase the warning period in which
we refresh tags from 30s to 2 minutes.
* Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
to close the I2PSocket (leaving it to timeout).
* Off-by-one fix to the tunnel pool management code, along side some
explicit initialization. This can affect clients whose lengths are
shorter than the router's default (thanks duck!)
if you want to get this data and you're running outside the router, just toss on a
"-Dstat.logFilters=* -Dstat.logFile=proxy.stats" to the java command line. the resulting
file can be parsed w/ java -cp lib/i2p.jar net.i2p.stat.StatLogSplitter proxy.stats, then fed
into gnuplot or whatever
further and cancel all of the tags we're using for that peer so that we can react to their
potential restart / tag loss quicker.
* use the minimum resend delay as the base to be exponentiated if our RTT is too low
(so we resend less)
* dont be such a wuss when flushing a closed stream
* add new back-off logic to reduce payload resends during transient
lag - only let one packet be resent at a time, even if the window size
allows it (and the packet timers request it). this should make
congestion less painful, and reduce the overall number of messages
resent (as the SACKs for the one packet actively resent should clarify
what made it through)
* Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
* Fix a leak injected into the SimpleTimer
* Fix a race condition in the tunnel message handling
* Added throttles on how many I2PTunnel client connections we open at once
* Replaced some buffered streams in I2PTunnel with unbuffered streams, as
the streaming library used should take care of any buffering.
* Added a cache for some objects used in I2PTunnel, especially useful when
there are many short lived connections.
* Trimmed the SimpleTimer's processing a bit
* Added throttles on how many I2PTunnel client connections we open at once
* Replaced some buffered streams in I2PTunnel with unbuffered streams, as
the streaming library used should take care of any buffering.
* Added a cache for some objects used in I2PTunnel, especially useful when
there are many short lived connections.
* Trimmed the SimpleTimer's processing a bit
* make sure we ack duplicate messages received (if we aren't already doing so)
* implement a choke on the local buffer, in case we receive data faster than its
removed from the i2psocket's MessageInputStream (handle via packet drop and
explicit congestion notification)
* Remove spurious flush calls from I2PTunnel, and work with the
I2PSocket's output stream directly (as the various implementations
do their own buffering).
* Another pass at a long standing JobQueue bug - dramatically simplify
the job management synchronization since we dont need to deal with
high contention (unlike last year when we had dozens of queue runners
going at once).
* Logging