Commit Graph

311 Commits

Author SHA1 Message Date
Matt Joiner 9387e60999 Track concurrent requests across connections
In preparation for some more request strategy options
2018-02-01 14:46:03 +11:00
Matt Joiner 1a7708b484 sortimports 2018-01-31 16:42:40 +11:00
Matt Joiner ceaf5a2360 Add some sanity checks to priorities extracted from Torrent.pendingPieces 2018-01-29 18:22:21 +11:00
Matt Joiner 77806c1f49 More development of the new logging interface 2018-01-29 18:22:21 +11:00
Matt Joiner ef4c0f1413 Add Torrent.Stats.ConnectedSeeders
Fixes #231
2018-01-29 18:22:21 +11:00
Matt Joiner 53e32ca9dd Start using new log package 2018-01-28 16:07:11 +11:00
Matt Joiner 5ef22a978b Synchronize piece completion on piece hash failure
Pieces that were unknown, remained unknown despite hashing for that very reason.
2018-01-28 16:02:14 +11:00
Matt Joiner 906d3bc5bb Include completion known in PieceState 2018-01-28 15:58:55 +11:00
Matt Joiner de928be582 Remove premature update to piece priority after piece is completed
This should have prevented Torrent.piecePriorityChanged from being called, meaning requests for the completed piece were not canceled, and the piece remained in connection's piece request queue, which meant wasted effort downloading chunks for an already acquired piece.

Thanks to @elgatito for discovering the issue.
2018-01-28 15:52:14 +11:00
Matt Joiner 1725fc9a36 Include torrent stats in status 2018-01-27 14:31:46 +11:00
Matt Joiner 52524925d2 Add separate piece priorities, and cache pending pieces
Should fix a bug where prioritizing files is not alone sufficient to trigger downloading.
2018-01-25 17:18:36 +11:00
Matt Joiner e3c098441a Add Torrent.setInfo 2018-01-25 17:10:37 +11:00
Matt Joiner 4807d05018 Improve some comments 2018-01-25 17:02:52 +11:00
Matt Joiner 21108bf6ec Fix file piece index offset calculations 2018-01-25 17:01:29 +11:00
Matt Joiner 0b553b296f Add File priorities
Fixes #220.
2018-01-21 22:49:12 +11:00
Matt Joiner 696595a76e Add comment explaining Torrent.requestStrategy 2018-01-12 12:24:51 +11:00
Matt Joiner ed7e3f6ec0 Make Torrent.pendingPieces a priority bitmap in preparation for #220 2018-01-12 12:24:37 +11:00
Matt Joiner 87a033e074 Readers obtained from File.NewReader should not readahead into other Files
Fixes #221. Additionally Torrent.length is a pointer and isn't set until the info is available to avoid it defaulting to zero.
2018-01-06 23:15:41 +11:00
Matt Joiner 9b718566ba Add File.NewReader
Fixes #222
2018-01-06 16:37:13 +11:00
Matt Joiner 25cf92502d Improve a log message 2017-12-28 23:58:07 +11:00
Matt Joiner 54a7d83c45 Log dropping of bad peers in debug mode only 2017-12-03 13:44:37 +11:00
Matt Joiner 27253eb0d0 Fix panic in Torrent.addrActive if there are closed connections
Fixes #214
2017-12-02 10:01:27 +11:00
Matt Joiner 47622fad36 Fix the Stats panic in #214 2017-12-02 09:58:08 +11:00
Matt Joiner d77e939944 Synchronize access to storage 2017-12-01 23:09:07 +11:00
Matt Joiner afa9d2ba28 Torrent.bytesLeft was taking a copy instead of pointer to Piece 2017-12-01 17:58:42 +11:00
Matt Joiner 2daa604eb2 Publish piece state changes after verifying piece 2017-12-01 14:03:05 +11:00
Matt Joiner 8f7720edb2 Merge commit '6ab65a49a8a72dea1a28968b2ab42a85fd4566ec'
# Conflicts:
#	config.go
2017-11-08 20:23:15 +11:00
Matt Joiner 163a63f9a7 Torrent.Metainfo: Don't return incomplete metadata bytes
Fixes #208
2017-11-08 19:56:20 +11:00
Matt Joiner 3aa1e8f3ef Add a test for behaviour after getting metadata_size and before GotInfo
#208
2017-11-08 19:31:10 +11:00
themihai 6ab65a49a8 feat(config): Allows the torrent client to customise the client identity and connection config 2017-11-07 20:14:13 +02:00
Matt Joiner ff1bd84e7e Fix #205 2017-11-08 00:34:59 +11:00
Matt Joiner 9757f04cf8 Apply megacheck to torrent package 2017-11-07 16:11:59 +11:00
Matt Joiner 2c6b842bbf Remove noisy log message 2017-11-05 15:39:36 +11:00
Matt Joiner 361c8654c7 Add some TODOs 2017-11-05 15:39:35 +11:00
Samuel 3e74396c66 Aggressive Upload (#203)
* Aggressive Upload Config

* Aggressive Upload

* Flip config option.

* Flip Aggressive Upload Config Option
2017-11-05 14:04:33 +11:00
Matt Joiner 5d133ea387 Remove debug log message 2017-10-12 17:52:26 +11:00
Matt Joiner dd083a4e11 Track completion known to implementation state
Addresses #193
2017-10-12 16:09:32 +11:00
Matt Joiner 17ea4f7fdd Performance optimizations to calculating bytes left in Torrent
Was generating significant overhead in cmd/torrent
2017-09-23 15:28:13 +10:00
Matt Joiner 2c91d1e3fb Changes to Bitmap referencing 2017-09-23 15:27:10 +10:00
Matt Joiner 6aad8041ab Implement new request strategy
The new strategy, 2, has the fastest connection download by priority in order, and all other pieces stick to a randomized ordering that's stable per connection.
2017-09-23 15:25:47 +10:00
Matt Joiner 1f6a7eb810 It looks like Torrent.worstBadConn was returning an arbitrary bad connection, it wasn't the worst
heap.Init got lost somewhere along the way? Need a unit test for this.
2017-09-21 19:32:03 +10:00
Matt Joiner bb53c97d38 Move uploading to the connection writer 2017-09-18 12:09:08 +10:00
Matt Joiner ed0fa62340 Comment and formatting 2017-09-17 00:45:12 +10:00
Matt Joiner 69ffb9bc8d Fix build error 2017-09-17 00:44:09 +10:00
Matt Joiner 846da66103 Merge pull request #188 from boramalper/KnownSwarm
added the initial version of the (t *Torrent) KnownSwarm() function
2017-09-17 00:20:00 +10:00
Bora M. Alper a66b0e83f3 added support for half-open peers in KnownSwarm() function 2017-09-16 11:48:16 +01:00
Matt Joiner b3137b1ede Make type piece public 2017-09-15 19:35:16 +10:00
Matt Joiner 2aa20b3e22 Don't verify data at startup, add Torrent.Piece.VerifyData and Torrent.VerifyData for this purpose
This has the side effect of deflaking a lot of tests that race to verify data when a torrent is added.
2017-09-15 19:22:32 +10:00
Matt Joiner b39df82fbc Include peer data with half open connections 2017-09-15 19:10:09 +10:00
Bora M. Alper f87b732959 added the initial version of the (t *Torrent) KnownSwarm() function 2017-09-12 15:22:53 +01:00