* i2psnark: Paranoid copy before writing pieces,
recheck files on completion, redownload bad pieces
* i2psnark: Don't contact tracker as often when seeding
* i2psnark: Implement retransmission of requests. This
eliminates one cause of complete stalls with a peer.
This problem is common on torrents with a small number of
active peers where there are no choke/unchokes to kickstart things.
* i2psnark: Mark a peer's requests as unrequested on disconnect,
preventing premature end game
* i2psnark: Randomize selection of next piece during end game
* i2psnark: Don't restore a partial piece to a peer that is already working on it
* i2psnark: strip ".torrent" on web page
* i2psnark: Limit piece size in generated torrent to 1MB max
* i2psnark: Fix bug where new peers would always be set to "interested"
regardless of actual interest
* i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
memory and efficiency problems
* i2psnark: Implement basic partial-piece saves across connections
* i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
from dropping us for inactivity but also renders the 2-minute transmit-inactivity
code in i2psnark ineffective. Will have to research why there is transmit but
not receive inactivity code. With the current connection limit of 24 peers
we aren't in any danger of keeping out new peers by keeping inactive ones.
* i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
* i2psnark: Fix dropped chunk handling
* i2psnark: Web rate report cleanup
* i2psnark: Report cleared trackerErr immediately
* i2psnark: Add trackerErr reporting after previous success; retry more quickly
* i2psnark: Set up new connections more quickly
* i2psnark: Don't delay tracker fetch when setting up lots of connections
* i2psnark: Reduce MAX_UPLOADERS from 12 to 4
* Added a simple purge and ban of syndie authors, shown as the
"Purge and ban" button on the addressbook for authors that are already
on the ignore list. All of their entries and metadata are deleted from
the archive, and the are transparently filtered from any remote
syndication (so no user on the syndie instance will pull any new posts
from them)
* More strict tunnel join throtting when congested
* HTML fixes in Syndie to work better with opera (thanks shaklen!)
* Give netDb lookups to floodfill peers more time, as they are much more
likely to succeed (thereby cutting down on the unnecessary netDb
searches outside the floodfill set)
* Fix to the SSU IP detection code so we won't use introducers when we
don't need them (thanks Complication!)
* Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
peers given to it
* Don't let netDb searches wander across too many peers
* Don't use the 1s bandwidth usage in the tunnel participation throttle,
as its too volatile to have much meaning.
* Don't bork if a Syndie post is missing an entry.sml
2006-02-27 jrandom
* Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
machines, rather than the generic jbigi (until we have an athlon64
optimized version)
* Switch from the bouncycastle to the gnu-crypto implementation for
SHA256, as benchmarks show a 10-30% speedup.
* Removed some unnecessary object caches
* Don't close i2psnark streams prematurely
* Run the peer profile coalescing/reorganization outside the job queue
(on one of the timers), to cut down on some job queue congestion. Also,
trim old profiles while running, not just when starting up.
* Slightly more sane intra-floodfill-node netDb activity (only flood new
entries)
* Workaround in the I2PTunnelHTTPServer for some bad requests (though the
source of the bug is not yet addressed)
* Better I2PSnark reconnection handling
* Further cleanup in the new tunnel build process
* Make sure we expire old participants properly
* Remove much of the transient overload throttling (it wasn't using a good
metric)
* New tunnel build process - does not use the new crypto or new peer
selection strategies. However, it does drop the fallback tunnel
procedure, except for tunnels who are configured to allow them, or for
the exploratory pool during bootstrapping or after a catastrophic
failure. This new process prefers to fail rather than use too-short
tunnels, so while it can do some pretty aggressive tunnel rebuilding,
it may expose more tunnel failures to the user.
* Always prefer normal tunnels to fallback tunnels.
* Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
bar!)
* Do all of the netDb entry writing in a separate thread, avoiding
duplicates and batching them up.
* Disable multifile torrent creation in I2PSnark's web UI for the moment
(though it can still seed and participate in multifile swarms)
* Enable a new speed calculation for profiling peers, using their peak
1 minute average tunnel throughput as their speed.
* Include a simple torrent creator in the I2PSnark web UI
* Further streaming lib closing improvements
* Refactored the load test components to run off live tunnels (though,
still not safe for normal/anonymous load testing)
* Add a new Status: line on the router console - "ERR-ClockSkew", in case
the clock is too skewed to do anything useful (check the year and month,
not just the hour and minute).
* Fixed the read/write timeouts in the streaming lib (so that it actually
honors them now)
* Minor I2PSnark cleanups (no read timeout, more careful shutdown and
torrent closing)
* Handle an oddball tunnel creation failure (thanks Xunk)
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
* I2PSnark logging, disconnect old inactive peers rather than new ones,
memory usage reduction, better OOM handling, and a shared connection
acceptor.
* Cleaned up the Syndie blog page and the resulting filters (viewing a
blog from the blog page shows threads started by the selected author,
not those that they merely participate in)
* Added a standalone runner for the I2PSnark web ui (build with the
command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
* Further I2PSnark error handling
* Added some I2PSnark sanity checks, an OOMListener when running
standalone, and a guard against keeping memory tied up indefinitely.
* Sanity check on the watchdog (thanks zzz!)
* Handle invalid HTTP requests in I2PTunnel a little better
* Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
properly (thanks Complication!)
* More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
b0rking in the DirMonitor, etc)
* Added multitorrent support to I2PSnark, accessible currently by running
"i2psnark.jar --config i2psnark.config" (which may or may not exist).
It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
their data in that directory as well. Removing the .torrent file stops
participation, and it is currently set to seed indefinitely. Completion
is logged to the logger and standard output, with further UI interaction
left to the (work in progress) web UI.
* Fix to drop peer references when we shitlist people again (thanks zzz!)
* Further I2PSnark fixes to deal with arbitrary torrent info attributes
(thanks Complication!)
* Fixed I2PSnark's handling of some torrent files to deal with those
created by Azureus and I2PRufus (it didn't know how to deal with
additional meta info, such as path.utf-8 or name.utf-8).