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

100 Commits

Author SHA1 Message Date
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
Matt Joiner
ad6ac3f2cd More cleaning of public interface 2015-03-08 17:28:14 +11:00
Matt Joiner
3e753bb8ad Change up the data storage interfaces a bit 2015-03-07 17:11:45 +11:00
Matt Joiner
779f4d3b97 Implement Handle.ReadAt 2015-03-04 13:06:33 +11:00
Matt Joiner
4eb70e0673 Support opening handles to Torrent and File 2015-03-01 14:32:54 +11:00
Matt Joiner
a2d69b4931 Make blob data stateful 2015-02-27 12:45:55 +11:00
Matt Joiner
315c703456 Rename TorrentData->Data 2015-02-27 01:43:37 +11:00
Matt Joiner
22746dda23 Ditch the intermediate MetaInfo type 2015-02-26 22:17:58 +11:00
Matt Joiner
c75dbccea3 Hide a whole bunch of functions seen via torrent 2015-02-25 15:42:47 +11:00
Matt Joiner
0eb418360b Allow configuring Client torrent data opener, config dir, disabling metainfo cache, and prune with a timer instead of goroutine 2015-02-25 14:48:39 +11:00
Matt Joiner
9fb7934d0c Comments 2015-02-25 01:34:57 +11:00
Matt Joiner
4b1b009049 Encapsulate torrent data, and provide os.File and mmap-based implementations 2015-02-10 00:14:52 +11:00
Matt Joiner
029d6939f8 Hide some methods that shouldn't be public 2015-02-10 00:12:29 +11:00
Matt Joiner
4ca6b4e2c7 Fix some stuff Rob Clifford broke through stress testing 2015-02-06 14:54:59 +11:00
Matt Joiner
89fc37d46f Expose PieceStatusCharSequence 2015-01-26 20:52:59 +11:00
Matt Joiner
78caa4533b Scale readahead with unchoked connections 2015-01-11 00:16:57 +11:00
Matt Joiner
d54c5ddf24 Remove a bunch of dead code 2014-12-28 12:51:09 +11:00
Matt Joiner
3a221dc57d Rip out the pieces by bytes left and responsive download strategy stuff 2014-12-26 17:15:17 +11:00
Matt Joiner
262f045fd1 Fixes due to not pending chunk specs prematurely 2014-12-09 00:22:05 -06:00
Matt Joiner
a081ad63d9 Save memory by not pending chunks prematurely 2014-12-08 21:57:13 -06:00
Matt Joiner
bacb1af357 Write piece status as counts of contiguous identical states 2014-12-06 21:16:02 -06:00
Matt Joiner
b6ae4caa6a Set priorities ahead of the current read position 2014-12-05 00:56:28 -06:00
Matt Joiner
ac1afa19b8 mmap_span: Avoid allocating the span slice on every use 2014-12-05 00:54:55 -06:00
Matt Joiner
91c2c1f5c7 Piece priorities, torrent read interface and many fixes 2014-12-03 01:07:50 -06:00
Matt Joiner
a87e753572 When metadata arrives, we also need to init request ordering 2014-12-02 18:42:22 -06:00
Matt Joiner
c41919807e Reuse the info bytes when marshalling torrent metainfo 2014-12-01 23:33:38 -06:00
Matt Joiner
5c8de6dd7c Skip mapping files with length 0 2014-12-01 19:13:08 -06:00
Matt Joiner
c7283182b6 Trivial 2014-12-01 16:40:18 -06:00
Matt Joiner
fb2b626175 Don't send constructed MetaInfo down a channel when it's available, build it on demand 2014-12-01 16:37:40 -06:00
Matt Joiner
cb75f49bf7 torrent.String, if the name isn't available, use the info hash 2014-12-01 14:29:30 -06:00
Matt Joiner
db0232e03f Not ever hashed takes higher priority than partially downloaded 2014-12-01 03:28:25 -06:00