2005-12-22 jrandom
* Bundle the standalone I2PSnark launcher in the installer and update
process (launch as "java -jar launch-i2psnark.jar", viewing the
interface on http://localhost:8002/)
* Don't autostart swarming torrents by default so that you can run a
standalone I2PSnark from the I2P install dir and not have the embedded
I2PSnark autolaunch the torrents that the standalone instance is running
* Fixed a rare streaming lib bug that could let a blocking call wait
forever.
* Fix for old Syndie blog bookmarks (thanks Complication!)
* Fix for I2PSnark to accept incoming connections again (oops)
* Randomize the order that peers from the tracker are contacted
* Inlined the Syndie CSS to reduce the number of HTTP requests (and
because firefox [and others?] delay rendering until they fetch the css).
* Make sure we fire the shutdown tasks when regenerating a new identity
(thanks picsou!)
* Cleaned up some of the things I b0rked in the 'dynamic keys' mode
* Don't drop SSU sessions if they're still transmitting data successfully,
even if there are transmission failures
* Adjusted the time summarization to display hours after 119m, not 90m
* Further EepGet cleanup (grr)
* Added support for 'dynamic keys' mode, where the router creates a new
router identity whenever it detects a substantial change in its public
address (read: SSU IP or port). This only offers minimal additional
protection against trivial attackers, but should provide functional
improvement for people who have periodic IP changes, since their new
router address would not be shitlisted while their old one would be.
* Added further infrastructure for restricted route operation, but its use
is not recommended.
* IE doesn't strip SPAN from <button> form fields, so add in a workaround
within I2PTunnel.
* Increase the maximum SSU retransmission timeout to accomodate slower or
more congested links (though SSU's RTO calculation will usually use a
much lower timeout)
* Moved the streaming lib timed events off the main timer queues and onto
a streaming lib specific set of timer queues. Streaming lib timed
events are more likely to have lock contention on the I2CP socket while
other timed events in the router are (largely) independent.
* Fixed a case sensitive lookup bug (thanks tino!)
* Syndie cleanup - new edit form on the preview page, and fixed some blog
links (thanks tino!)
* IE doesn't strip SPAN from <button> form fields, so add in a workaround
within I2PTunnel.
* Increase the maximum SSU retransmission timeout to accomodate slower or
more congested links (though SSU's RTO calculation will usually use a
much lower timeout)
* Moved the streaming lib timed events off the main timer queues and onto
a streaming lib specific set of timer queues. Streaming lib timed
events are more likely to have lock contention on the I2CP socket while
other timed events in the router are (largely) independent.
* Fixed a case sensitive lookup bug (thanks tino!)
* Syndie cleanup - new edit form on the preview page, and fixed some blog
links (thanks tino!)
* Add filtering threads by author to Syndie, populated with authors in the
user's addressbook
* When creating the default user, add
"http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
configured to automatically pull updates. (what other archives should
be included?)
* Tiny servlet to help dole out the new routerconsole themes, and bundle
the installer/resources/themes/** into ./docs/themes/** on both install
and update.
* Merge sucker into syndie with a rssimport.jsp page.
* Add getContentType() to EepGet.
* Make chunked transfer work (better) with EepGet.
* Do replaceAll("<","<") for logs.
* Defer netDb searches for newly referenced peers until we actually want
them
* Ignore netDb references to peers on our shitlist
* Set the timeout for end to end client messages to the max delay after
finding the leaseSet, so we don't have as many expired messages floating
around.
* Add a floor to the streaming lib window size
* When we need to send a streaming lib ACK, try to retransmit one of the
unacked packets instead (with updated ACK/NACK fields, of course). The
bandwidth cost of an unnecessary retransmission should be minor as
compared to both an ACK packet (rounded up to 1KB in the tunnels) and
the probability of a necessary retransmission.
* Adjust the streaming lib cwin algorithm to allow growth after a full
cwin messages if the rtt is trending downwards. If it is not, use the
existing algorithm.
* Increased the maximum rto size in the streaming lib.
* Load balancing bugfix on end to end messages to distribute across
tunnels more evenly.
* Add a blocking fetch to EepGetScheduler and RemoteArchiveBean and use them from the updater, to prevent race conditions with multiple archive fetches.
* Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
./prngseed.rnd (if they exist), and reseeding it with data out of
various crypto operations (unused bits in a DH exchange, intermediary
bits in a DSA signature generation, extra bits in an ElGamal decrypt).
The Fortuna implementation under gnu.crypto.prng has been modified to
use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
I2P uses), and the resulting gnu.crypto.prng.* are therefor available
under GPL+Classpath's linking exception (~= LGPL). I2P's SecureRandom
wrapper around it is, of course, public domain.
* Workaround a bug in GCJ's Calendar implementation
* Propery throw an exception in the streaming lib if we try to write to a
closed stream. This will hopefully help clear some I2Phex bugs (thanks
GregorK!)
* Ported the snark bittorrent client to I2P such that it is compatible
with i2p-bt and azneti2p. For usage information, grab an update and run
"java -jar lib/i2psnark.jar". It isn't currently multitorrent capable,
but adding in support would be fairly easy (see PeerAcceptor.java:49)
* Don't allow leaseSets expiring too far in the future (thanks postman)
* Bugfix for the auto-update code to handle different usage patterns
* Decreased the addressbook recheck frequency to once every 12 hours
instead of hourly.
* Handle dynamically changing the HMAC size (again, unless your nym is
toad or jrandom, ignore this ;)
* Cleaned up some synchronization/locking code
* Allow an env prop to configure whether we want to use the backwards
compatible (but not standards compliant) HMAC-MD5, or whether we want
to use the not-backwards compatible (but standards compliant) one. No
one should touch this setting, unless your name is toad or jrandom ;)
* Added some new dummy facades
* Be more aggressive on loading up the router.config before building the
router context
* Added new hooks for apps to deal with previously undefined I2NP message
types without having to modify any code.
* Demo code for using a castrated router for SSU comm (SSUDemo.java)
* Implemented a new I2PTunnelIRCClient which locally filters inbound and
outbound IRC commands for anonymity and security purposes, removing all
CTCP messages except ACTION, as well as stripping the hostname from the
USER message (while leaving the nick and 'full name'). The IRC proxy
doesn't use this by default, but you can enable it by creating a new
"IRC proxy" tunnel on the web interface, or by changing the tunnel type
to "ircclient" in i2ptunnel.config.
2005-10-10 jrandom
* I2PTunnel http client config cleanup and stats
* Minor SSU congestion tweaks and stats
* Reduced netDb exploration period
2005-10-07 jrandom
* Include the 1 second bandwidth usage on the console rather than the
1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
issues.
2005-09-29 jrandom
* Let syndie users modify their metadata.
* Reseed the router on startup if there aren't enough peer references
known locally. This can be disabled by creating the file .i2pnoreseed
in your home directory, and the existing detection and reseed handling
on the web interface is unchanged.
* I2PTunnel bugfix (thanks Complication!)
* Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
instead of k/cwin)
* Limit the number of inbound SSU sessions being built at once (using
half of the i2np.udp.maxConcurrentEstablish config prop)
* Don't shitlist on a message send failure alone (unless there aren't any
common transports).
* More careful bandwidth bursting
* Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
conflict resolution page if the i2paddresshelper parameter differs from
an existing name to destination mapping.
2005-09-25 jrandom
* Fix a long standing streaming lib bug (in the inactivity detection code)
* Improved handling of initial streaming lib packet retransmissions to
kill the "lost first packet" bug (where a page shows up with the first
few KB missing)
* Add support for initial window sizes greater than 1 - useful for
eepsites to transmit e.g. 4 packets full of data along with the initial
ACK, thereby cutting down on the rtt latency. The congestion window
size can and does still shrink down to 1 packet though.
* Adjusted the streaming lib retransmission calculation algorithm to be
more TCP-like.
* Bugfix in susidns for deleting entries
2005-09-21 jrandom
* Add support for HTTP POST to EepGet
* Use HTTP POST for syndie bulk fetches, since there's a lot of data to
put in that URL.
* Added support for pure 64bit linux with jbigi and the java service
wrapper (no need for jcpuid if we're on os.arch=amd64). Thanks mule
et al for help testing!
* UI cleanup in Syndie (thanks gloin and bar!)
2005-09-17 jrandom
* Clean up syndie a bit more and bundle a default introductory post with
both new installs and updates.
* Typo fixes on the console (thanks bar!)
* Removed guaranteed delivery mode entirely (so existing i2phex clients
using it can get the benefits of mode=best_effort). Guaranteed delivery
is offered at the streaming lib level.
* Improve the peer selection code for peer testing, as everyone now
supports tests.
* Give the watchdog its fangs - if it detects obscene job lag or if
clients have been unable to get a leaseSet for more than 5 minutes,
restart the router. This was disabled a year ago due to spurious
restarts, and can be disabled by "watchdog.haltOnHang=false", but the
cause of the spurious restarts should be gone.