preserve all non-standard fields (such as those created by Robert) so the
infohash doesn't change on restart, splitting the swarm.
(http://zzz.i2p/topics/1327 thx 'backup')
- Add idle detector, reduce tunnel count when idle (prep for torrent updates)
- Cancel CoordinatorAcceptor cleaner when halted
- Make PeerCoordinatorSet an Iterable
- Reduce max protocol errors to 1
- Disable unused PeerMonitorTask
- Limit number of torrents displayed; add previous/next page buttons
- Only register one instance with UpdateManager
- New icons from famfam/silk, same license
- Use servlet path as base for config file and data directory names,
so we may have multiple instances running together
- Don't override service(), use doGet() and doPost() instead
Required due to webapp classloader changes in Jetty 7,
we can no longer access or extend Jetty classes.
- Extend javax HttpServlet instead of Jetty's DefaultServlet
- Implement BasicServlet to replace functions of DefaultServlet
- Add MimeTypes implementation to add to servlet's defaults
- Add local mime.properties file, remove checks in I2PSnarkServlet for those
we were missing
- Eliminate all use of Jetty utility classes including MimeType, Resource,
Buffer, Cache, URIUtil, ...
TODO:
- Use servlet path everywhere, so the war can be renamed
- Don't override service()
- More DHT limits
- Announce to backup trackers if DHT is empty
- Use PEX and DHT info in torrent peer count
- Don't use temp files for announces
- TrackerClient refactoring
- cleanups
- Add kbucket debugging
- Eliminate redundant explore keys
- Add more limits to DHT tracker
- Delay expiration at startup
- Only enable updates for dev builds and 1% of release builds
* Update Manager: Warn on dup registration