Skip to content

Releases: Johnnei/JavaTorrent

0.7.0

08 Nov 16:01
0.7.0
12e8942
Compare
Choose a tag to compare

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 on TorrentClient 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 by BitTorrentHandshakeHandler
  • 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 the TorrentClient

Deprecated

  • JBT-102: Peer#getBitTorrentSocket() is now deprecated. The BitTorrentSocket will become an internal class.
    Functionality will be replaced.
  • JBT-110: UtpModule.Builder#listenOn(int) now reuses the download port set on the TorrentClient

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

11 Jan 19:44
v0.6.0
200376d
Compare
Choose a tag to compare

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 the AbstractFileSet of the given Piece. This makes the system
    more re-usable for other systems.
  • JBT-33: Doubled Torrent download throughput (According to integration test).
  • JBT-70: ISocket and TcpSocket 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 returns byte[] instead of String 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 a Piece instead of the index of the piece.
  • JBT-10: Torrent#getMetadata now returns a dedicated non-null Metadata object with an optional AbstractFileSet in
    case downloading the metadata is supported.
  • JBT-33: TorrentClient now requires IRequestLimiter 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

19 Jul 20:10
Compare
Choose a tag to compare

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() returned false too early. This has been corrected.
  • JBT-42: Fix FullPieceSelect having inconsistent piece sorting.
  • JBT-43: Bencoding now takes in an InStream 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.