- Move config file and DHT persistence file to a config dir
- Move per-torrent configuration from "zmeta" in the main config file
to a per-torrent config file (ticket #1132)
- Split timestamp and bitfield into separate configs
- Fix misspelling of autoStart config
- Remove two unused SnarkManager methods
- Move net.i2p.kademlia package from i2psnark to core, and convert
netdb to use it.
- Delete old implementation in netdb
- Fixups in netdb for generics
- Add debug output to /debug
This is the next step in the development plan, in which we previously:
- Copied the code from netdb to the i2p.zzz.kademlia branch, fixed it,
and made it generic for hash size (June 2012);
- Moved it from the i2p.zzz.kademlia branch to the i2p.i2p.zzz.dhtsnark
branch, and implemented KRPC with it (June 2012);
- Propped it from i2p.i2p.zzz.dhtsnark to trunk for 0.9.2 (July-Sept. 2012);
- Proved it out in 0.9.2 - 0.9.9 (Oct. 2012 - Nov. 2013)
The plan was to maintain the KBucketSet public methods throughout the development
so we could drop the new version back into netdb, so here we drop it in.
Setting of K=16, B=3 is just an initial guess, to be reviewed.
This moves about 18 KB from i2psnark.jar to i2p.jar and removes about 12 KB from router.jar.
Unit test fixup: todo.
- Make I2PSocketFull.close() nonblocking; it will now cause any user-side
writes blocked in I/O (Connection.packetSendChoke()) to throw
an exception (tickets #629, #1041)
- Don't ignore InterruptedExceptions; throw InterruptedIOException
- Back out static disconnect exception
- MessageInputStream locking fixes
- Cleanups
I2PSnark:
- Close socket before closing output stream to avoid blocking in
Peer.disconnect(), and prevent Peer.disconnect() loop
- Combine getPeers and announce into a single method, as we must announce to
the closest from the getPeers, not the closest from the kbuckets
- Stop getPeers when nothing closer is found
- Increase dest lookup and search timeouts
- Increase max search depth
- Loop tracker client faster when in magnet mode
- Loop tracker client faster if DHT announce fails
- Don't return an empty peers list if we only know about the requestor
- volatiles, log tweaks
- Major fixes of getPeers() to follow