2
0
mirror of synced 2025-02-24 14:48:27 +00:00

130 Commits

Author SHA1 Message Date
Gleb Sinyavsky
8637086ef9 Merge branch 'master' of https://github.com/anacrolix/torrent 2016-01-04 15:39:08 +03:00
Matt Joiner
8346ff81f7 Switch to int from peer_protocol.Integer for piece index in a lot of places 2016-01-04 22:34:24 +11:00
Gleb Sinyavsky
be8e44da3c peersKey is a public type now 2015-12-27 15:27:32 +03:00
Matt Joiner
86c4c609f1 Expose Torrent.SetDisplayName 2015-12-12 14:03:04 +11:00
Matt Joiner
79eb1ca0d5 torrent.DisplayName should not be exported 2015-11-22 18:44:08 +11:00
Matt Joiner
d01c6221e6 Remove sync.Cond from piece
It's not trivial to ensure that anyone waiting on the piece Cond will wake on events like the torrent being dropped from the client.
2015-11-06 00:40:16 +11:00
Matt Joiner
c7cb1009a5 Fix #33. 2015-10-20 17:53:12 +11:00
Matt Joiner
b3a8020401 Store pieces inplace in torrent.Pieces
This should save some allocation overhead, especially for torrents that have 20k+ pieces.
2015-10-16 22:10:03 +11:00
Matt Joiner
b0b5794890 Create a pieceStore interface, and merge in my httpfile backend, and replace data/blob
data/blob was aging, and had severe performance problems. It's now possible to use missinggo/filecache as a data backend to pieceStore which is better tested and performs excellently.
2015-10-04 00:22:46 +10:00
Matt Joiner
b7a8bb7570 Simplify the torrent Data interface
None of the methods are optional anymore. Removed the nasty wrappers for some data implementations. Moved data.Data back into the main torrent package. Should make it much easier to understand for people implementing their own Data implementations.
2015-10-02 00:09:04 +10:00
Matt Joiner
58c997210e Track peer sources with a dict, and don't exceed high water mark 2015-09-28 15:30:13 +10:00
Matt Joiner
53259397fc Initialize connection piece priorities lazily, and using a pool 2015-09-26 17:27:35 +10:00
Matt Joiner
52b0705956 Include num pieces in torrent status 2015-09-25 22:05:32 +10:00
Matt Joiner
f9ed9c4c04 Avoid frequent allocation of piece request order iterator 2015-09-20 11:29:52 +10:00
Matt Joiner
eebd09c0fe Allow subscribing to torrent piece state changes 2015-09-06 12:33:22 +10:00
Matt Joiner
ef098c47ac Needlessly convoluted 2015-08-19 13:29:01 +10:00
Matt Joiner
085be622a0 Replacing pendingWrites WaitGroup with Mutex/Cond/int
Apparently I've been using WaitGroups wrong all along.
2015-08-05 02:40:46 +10:00
Matt Joiner
85a0fe6b61 Drop peers for sending too many unwanted pieces
So the algorithm is now, drop the worst half if they get too old, and drop any connection if it's ratio is poor.
2015-08-04 01:32:45 +10:00
Matt Joiner
d077fed72d Some utils moved to missinggo 2015-08-04 00:29:01 +10:00
Matt Joiner
0600c3b5e3 Several speedups in logic 2015-07-17 21:07:01 +10:00
Matt Joiner
7e9fe4f447 Store chunk data without holding client lock 2015-07-15 16:00:59 +10:00
Matt Joiner
c018c660f0 Allow chunk size to be specified per torrent 2015-07-15 15:31:18 +10:00
Matt Joiner
500f51d232 Some changes to writing torrent status 2015-06-30 00:46:24 +10:00
Matt Joiner
bb28ff7492 Replace pruning timer with as-required connection dropping 2015-06-30 00:45:26 +10:00
Matt Joiner
ced5733c88 Improve uploading/seeding 2015-06-16 16:57:47 +10:00
Matt Joiner
af127dfd0f Add some metainfo validation 2015-06-03 00:17:58 +10:00
Matt Joiner
a2df9f8b01 Miscellaneous changes 2015-06-03 00:03:43 +10:00
Matt Joiner
21fb4933fc Change the way piece state is exposed to give more detail 2015-06-01 18:22:12 +10:00
Matt Joiner
1cf591dc3d Switch to using a slice for tracking pending chunks. Saves massive amounts of memory. 2015-05-16 10:51:48 +10:00
Matt Joiner
0863f8ba2c go vet 2015-05-15 08:41:42 +10:00
Matt Joiner
0ec0302d1c Publicly expose Torrent.GotInfo 2015-04-28 15:24:17 +10:00
Matt Joiner
526d9d738e Rewrite imports to local bencode and metainfo 2015-04-27 14:55:01 +10:00
Matt Joiner
28b299e7c8 Rework the Torrent Reader interface, to allow reader options, and add "responsive" as one such option
Had several weeks of testing. Removes a lot of the "helper" reading methods, but this was necessary to allow per-Torrent reading options.
2015-04-14 23:59:41 +10:00
Matt Joiner
ade6087b2f Move torrentOffsetRequest and torrentRequestOffset, fixing a bug in former, and test it 2015-04-08 02:20:01 +10:00
Matt Joiner
60d8ea75a2 Prevent bad metadata_size in extended handshakes from stalling completion of metadata
Occasionally bad peers send ridiculous or incorrect metadata_size in their handshakes. If the first acceptable size is wrong, and too small, we'll keep failing metadata completion. If it's too large, honest peers will never send us the pieces we're asking for and we'll never complete the metadata. Now we just adjust the expected metadata size, and keep retrying until we finish. Additionally, we can now request metadata after sending initial messages.
2015-03-27 15:36:59 +11:00
Matt Joiner
3aa78763aa Use rogpeppe's sortimports to fix this goimports ordering madness 2015-03-26 17:18:08 +11:00
Matt Joiner
87690e4c4c Show metadata state in status output
This is help verify the cause for an occasional stall obtaining metadata from peers.
2015-03-25 15:50:31 +11:00
Matt Joiner
03e69c5464 Fix crash from bad metadata_size in extended handshake 2015-03-24 16:47:02 +11:00
Matt Joiner
67f90ed886 More public interface tidying 2015-03-20 23:52:53 +11:00
Matt Joiner
842a32ae0c Rewrite import paths for migration from Bitbucket 2015-03-20 16:37:44 +11:00
Matt Joiner
0c63952353 More cleaning up of public interface 2015-03-20 10:52:01 +11:00
Matt Joiner
a07eb8d720 Misc, some encryption related 2015-03-18 18:37:26 +11:00
Matt Joiner
28455fb817 Speed up stuff relating to checking piece completion 2015-03-18 18:34:35 +11:00
Matt Joiner
29238ff23f Change the interface to add torrents to a Client 2015-03-18 18:32:31 +11:00
Matt Joiner
a7dddd9be6 Rewrite handshaking and connection management 2015-03-18 18:28:13 +11:00
Matt Joiner
203da0aab0 Tidy up extension bytes handling; don't close conn from handshake writer; force protocol encryption for now 2015-03-13 06:21:13 +11:00
Matt Joiner
e85b7e228b Add support for Fast Extension 2015-03-12 20:06:23 +11:00
Matt Joiner
e6fbde0dc6 Rework piece completion 2015-03-11 02:41:21 +11:00
Matt Joiner
914bc12bb6 Harmless improvements 2015-03-11 02:39:01 +11:00
Matt Joiner
d7695c4585 Change torrent.Name() 2015-03-09 17:35:29 +11:00