Releases: Johnnei/JavaTorrent
Releases · Johnnei/JavaTorrent
0.7.0
Added
- JBT-104:
NioPeerConnector
is now available. This connector is optimized to run with out a dedicated thread but on
the executor threads. - JBT-110:
TorrentClientSettings
is introduced onTorrentClient
to separate client state from configuration
Changed
- JBT-98: The network layer has been rewritten to be event driven in favor of polling.
- JBT-100:
AbstractPeerConnectionAcceptor
has been replaced byBitTorrentHandshakeHandler
- JBT-102:
ISocket
has been remodelled around Channels instead of Sockets. - JBT-104:
BitTorrentSocket
is 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
/announce
suffix. - JBT-116: Connection queue has been given a priority strategy to (mostly) evenly split over torrents.
- JBT-117:
Peer#addBlockRequest
now 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:
UtpModule
now reuses the download port set on theTorrentClient
Deprecated
- JBT-102:
Peer#getBitTorrentSocket()
is now deprecated. TheBitTorrentSocket
will 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
isAcceptingConnections
is false.
Removed
- JBT-102:
BitTorrentSocket
has 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
Metadata
to 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
Job
system now relies on theAbstractFileSet
of the givenPiece
. This makes the system
more re-usable for other systems. - JBT-33: Doubled Torrent download throughput (According to integration test).
- JBT-70:
ISocket
andTcpSocket
have 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
PhaseData
no longer ingores choke states.
API Changes
- JBT-50:
IBencodedValue#serialise()
now returnsbyte[]
instead ofString
to correctly be capable of handling
Strings which represent byte arrays containing data which is not valid UTF-8. - JBT-10:
Peer#addBlockRequest
now accepts aPiece
instead of the index of the piece. - JBT-10:
Torrent#getMetadata
now returns a dedicated non-null Metadata object with an optionalAbstractFileSet
in
case downloading the metadata is supported. - JBT-33:
TorrentClient
now requiresIRequestLimiter
to control how many requests a peer may have. The
RateBasedLimiter
is 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#asBytes
allows 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()
returnedfalse
too early. This has been corrected. - JBT-42: Fix
FullPieceSelect
having inconsistent piece sorting. - JBT-43:
Bencoding
now takes in anInStream
and 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.