Releases: Johnnei/JavaTorrent
Releases · Johnnei/JavaTorrent
0.7.0
Added
- JBT-104:
NioPeerConnectoris now available. This connector is optimized to run with out a dedicated thread but on
the executor threads. - JBT-110:
TorrentClientSettingsis introduced onTorrentClientto separate client state from configuration
Changed
- JBT-98: The network layer has been rewritten to be event driven in favor of polling.
- JBT-100:
AbstractPeerConnectionAcceptorhas been replaced byBitTorrentHandshakeHandler - JBT-102:
ISockethas been remodelled around Channels instead of Sockets. - JBT-104:
BitTorrentSocketis now always a socket which has passed the handshake process. - JBT-99: Peer IO is now processed until it can no longer be executed without blocking.
- JBT-106: Unsupported tracker protocols no longer throw an exception but will log a warning and return
Optional#empty - JBT-107: UDP Trackers now support the common
/announcesuffix. - JBT-116: Connection queue has been given a priority strategy to (mostly) evenly split over torrents.
- JBT-117:
Peer#addBlockRequestnow rejects when the peer is choked - JBT-117: Metadata phases now use a dedicated choking strategy to show interest into clients which have the metadata and the ut_metadata extension data
- JBT-110:
UtpModulenow reuses the download port set on theTorrentClient
Deprecated
- JBT-102:
Peer#getBitTorrentSocket()is now deprecated. TheBitTorrentSocketwill become an internal class.
Functionality will be replaced. - JBT-110:
UtpModule.Builder#listenOn(int)now reuses the download port set on theTorrentClient
Fixed
- JBT-110: Remote connections coming in through uTP now correctly get ignored when
isAcceptingConnectionsis false.
Removed
- JBT-102:
BitTorrentSockethas forgotten how to process handshakes.
v0.6.0
Added
- JBT-19: Support for HTTP(s) trackers with the
HttpTrackerModule. - JBT-8: Support for base-32 magnet links.
- JBT-10: A dedicated class
Metadatato represent the Torrent Metadata.
Improvements
- JBT-59: Rebuild the uTP implementation from scratch. It's much more stable now
- JBT-39:
Optional<T>types have been removed as arguments and overloads have been added to compensate. - JBT-10: The internal
Jobsystem now relies on theAbstractFileSetof the givenPiece. This makes the system
more re-usable for other systems. - JBT-33: Doubled Torrent download throughput (According to integration test).
- JBT-70:
ISocketandTcpSockethave become part of the public API.
Fixes
- JBT-44: Completion of pieces no longer has a chance to cause
IndexOutOfBounds - JBT-75: The default included
PhaseDatano longer ingores choke states.
API Changes
- JBT-50:
IBencodedValue#serialise()now returnsbyte[]instead ofStringto correctly be capable of handling
Strings which represent byte arrays containing data which is not valid UTF-8. - JBT-10:
Peer#addBlockRequestnow accepts aPieceinstead of the index of the piece. - JBT-10:
Torrent#getMetadatanow returns a dedicated non-null Metadata object with an optionalAbstractFileSetin
case downloading the metadata is supported. - JBT-33:
TorrentClientnow requiresIRequestLimiterto control how many requests a peer may have. The
RateBasedLimiteris the old behaviour (but slightly improved to reach higher throughput).
Tracker lifecycle fix, less encoding issues and improved uTP packet loss handling
Added
- JBT-43:
IBencodedValue#asBytesallows for efficient transport of string representing raw bytes
(ex. the hashes in the .torrent file)
Improvements
- JBT-32: Prevent reads on Piece#checkHash when the hash can't possibly be correct.
- JBT-38: uTP is now better capable of dealing with packet loss.
Fixes
- JBT-40: The ITracker interface was not correctly added to the torrent lifecycle causes no peers to be fetched.
- JBT-41:
Torrent#isDownloadingMetadata()returnedfalsetoo early. This has been corrected. - JBT-42: Fix
FullPieceSelecthaving inconsistent piece sorting. - JBT-43:
Bencodingnow takes in anInStreamand reads the input as raw bytes as intended by the spec. This also
resolves the encoding issues.
Removal
- JBT-43:
Bencoding#getCharactersRead()The corrected API takes in a stream which won't be consumed further than
needed.