Commit Graph

274 Commits

Author SHA1 Message Date
Matt Joiner 48582796ed Add pending peers high water mark to stop excessively long running DHT queries 2014-12-08 21:58:49 -06:00
Matt Joiner 4be7b11a3b Use bitbucket.org/anacrolix/sync 2014-12-08 17:00:38 -06:00
Matt Joiner d9793a78ba Improve announce logging 2014-12-08 16:57:42 -06:00
Matt Joiner 1e3a00979d Fix UTP still listening despite attempting to temporarily disable it 2014-12-06 21:19:56 -06:00
Matt Joiner 51306ccbb2 Expose various DHT state 2014-12-06 21:19:02 -06:00
Matt Joiner d58ca65a9c pieceordering: Rename RemovePiece->DeletePiece and complete tests
Note that tests currently fail due to bug in skiplist?
2014-12-05 00:58:04 -06:00
Matt Joiner 65ccc9c75e Forgot to commit this part of fixing disable TCP dialing out 2014-12-05 00:56:51 -06:00
Matt Joiner b6ae4caa6a Set priorities ahead of the current read position 2014-12-05 00:56:28 -06:00
Matt Joiner f050bc02f7 Disabling TCP didn't include dialing out, also always disable UTP until the package is fixed 2014-12-05 00:53:26 -06:00
Matt Joiner 7b46b41011 Switch back to using the UTP redesign 2014-12-03 19:58:02 -06:00
Matt Joiner 91c2c1f5c7 Piece priorities, torrent read interface and many fixes 2014-12-03 01:07:50 -06:00
Matt Joiner 98400ab9c7 Harmless shortcut initing peer pieces when we have the torrent info 2014-12-02 18:43:05 -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 9fac3e8f33 Remove commented out code 2014-12-02 18:23:07 -06:00
Matt Joiner 7228e40c95 Add piece ordering per-connection piece request priority 2014-12-02 18:22:38 -06:00
Matt Joiner c75f79b097 Speed up tests, allow -short for some UDP tracker stuff 2014-12-02 14:23:01 -06:00
Matt Joiner e7dec6057b Backed out changeset: 603a76a6bdb0 2014-12-02 00:11:39 -06:00
Matt Joiner 351bc3e504 Update to use utp package redesign 2014-12-01 23:35:39 -06:00
Matt Joiner d599f85391 Ensure that when a cached torrent is used, the info hash is correct 2014-12-01 23:32:40 -06:00
Matt Joiner 0f1342d7d1 Don't clobber torrent name with empty magnet display name 2014-12-01 19:12:03 -06:00
Matt Joiner 0a91eef496 For now always read ahead 4 extra blocks 2014-12-01 17:02:31 -06:00
Matt Joiner e4f1f5d55e Rework torrent adding 2014-12-01 16:40:03 -06:00
Matt Joiner 362dfecbf2 Support banning torrents 2014-12-01 16:39:09 -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 709650c0bd Sleep between announces in case there are no trackers 2014-12-01 12:43:34 -06:00
Matt Joiner 75cde79d65 Improve the interface with client and download strategies 2014-12-01 03:37:33 -06:00
Matt Joiner 78ef36066d Give each connection its own piece priority order 2014-12-01 03:36:25 -06:00
Matt Joiner 0a71fe4bee Fast start torrent tracker announces 2014-12-01 03:33:52 -06:00
Matt Joiner 76f83e60b2 Misc good fixes 2014-12-01 03:32:17 -06:00
Matt Joiner 54ea32ddc4 Block IPv6 for now 2014-12-01 03:27:11 -06:00
Matt Joiner 336715874f Fix race reordering tracker tier 2014-11-29 20:33:45 -06:00
Matt Joiner d68664d6c8 Some changes to block list handling 2014-11-29 20:33:17 -06:00
Matt Joiner 0eb36e76ef A few tweaks 2014-11-28 19:42:18 -06:00
Matt Joiner 17a8b8aa17 Make use of IP blocklist and change the client lock to RWMutex
The blocklist is loaded through from the file at TORRENT_BLOCKLIST_FILE or
$HOME/.config/torrent/blocklist.
2014-11-28 19:41:53 -06:00
Matt Joiner 50e3db173f Allow DHT server config to be passed through when creating a new client 2014-11-28 12:13:08 -06:00
Matt Joiner c10fbb2022 Extra time between tracker announces 2014-11-28 08:39:13 -06:00
Matt Joiner 1527321c71 Wasn't actually copying the tiers
http://stackoverflow.com/questions/27055626/concisely-deep-copy-a-slice
2014-11-21 00:54:19 -06:00
Matt Joiner 97074dc060 Improve tracker connect error log message 2014-11-21 00:32:39 -06:00
Matt Joiner 4725a70875 Shuffle tracker tiers after adding trackers 2014-11-21 00:32:27 -06:00
Matt Joiner 1a401e82f5 Merge trackers by magnet links if the torrent is already present 2014-11-21 00:10:52 -06:00
Matt Joiner 06aff91f8c Don't open new connections or announce when new connections aren't wanted 2014-11-21 00:09:55 -06:00
Matt Joiner 1942d5b73b Fix default torrent client address, and leaked resources 2014-11-21 00:07:04 -06:00
Matt Joiner c57ea76b88 Support disabling UTP 2014-11-19 20:02:20 -06:00
Matt Joiner dd240b66c4 Simple connection pruner 2014-11-18 22:03:21 -06:00
Matt Joiner eacc624115 Expose a Torrent "handle", that implements ReaderAt 2014-11-18 21:58:36 -06:00
Matt Joiner c8327a8fe2 Log bad metadata packets instead of crashing 2014-11-18 21:57:27 -06:00
Matt Joiner 3dd43c6099 buffer WriteStatus and always write torrents in the same order 2014-11-18 21:56:50 -06:00
Matt Joiner 358f089515 Set a minimum dial timeout 2014-11-18 21:53:00 -06:00
Matt Joiner 1057ac8055 Adding a duplicate magnet returns the existing torrent 2014-11-18 14:34:13 -06:00
Matt Joiner 482dde8e3f Fix race condition calculating reduced dial timeout 2014-11-18 14:33:07 -06:00
Matt Joiner c63d36c1b6 Improve client status write-out 2014-11-18 14:32:51 -06:00
Matt Joiner abfa44d6e4 Count accepted connections 2014-11-18 14:31:47 -06:00
Matt Joiner 541f11aed4 Ensure the parallel dial invariant 2014-11-17 18:04:33 -06:00
Matt Joiner 8cae78cbf1 Reduce dial timeouts when there are lots of peers in the backlog 2014-11-17 18:04:09 -06:00
Matt Joiner 6d05994c2c dht: Include the sender of peers in the peer stream 2014-11-17 17:47:36 -06:00
Matt Joiner 727aac204f Expvar successful and unsuccessful dials 2014-11-17 01:44:06 -06:00
Matt Joiner 8d96195b0c Connect to peers using both UTP and TCP; Share UTP port with DHT 2014-11-16 23:27:01 -06:00
Matt Joiner ad7cf646c8 Open new connections when a connection is dropped 2014-11-16 21:37:34 -06:00
Matt Joiner 34a47a100e Add util AddrIP and AddrPort functions 2014-11-16 21:20:49 -06:00
Matt Joiner 77e064a0f5 Allow the client ID to be set in the config 2014-11-16 13:54:43 -06:00
Matt Joiner c1721b61ef Prevent clients from connecting to other clients with the same ID 2014-11-16 13:54:00 -06:00
Matt Joiner 3489a60154 Fix broken commit 2014-11-16 13:51:59 -06:00
Matt Joiner 4fead22cd2 Use more generic net error type to detect timeouts 2014-11-16 13:31:11 -06:00
Matt Joiner e37d369864 Move half-open tracking into per-torrent 2014-11-16 13:30:44 -06:00
Matt Joiner 963918ac90 Add UTP support, disable TCP for now. DHT moves to another port 2014-11-16 13:29:31 -06:00
Matt Joiner eeae2d3285 Actually announce to DHT, don't just get peers 2014-11-16 13:18:08 -06:00
Matt Joiner 86de81fba8 Tidy up address handling 2014-11-16 13:16:26 -06:00
Matt Joiner ecf2639856 Add magnet-metainfo, tool to download magnet to torrent file 2014-09-25 18:05:52 +10:00
Matt Joiner 6942eed15f Lazily hash pieces where possible 2014-09-15 03:25:53 +10:00
Matt Joiner 7eaef48f9e Fix crash when piece hash completes for dropped torrent 2014-09-14 04:07:05 +10:00
Matt Joiner 1cfd6ecdcb Improvements arising from attempting to delay piece hashing until necessary 2014-09-14 04:03:23 +10:00
Matt Joiner 979192cbfd Treat PORT messages with port of 0 to mean on the remote port 2014-09-14 03:59:31 +10:00
Matt Joiner bea5c1a502 Missed this dataRead call in an earlier commit 2014-09-14 03:58:13 +10:00
Matt Joiner dc2b622be1 Track failed piece hashes 2014-09-14 03:57:51 +10:00
Matt Joiner 97ae59dfaf Improve the data waiter system 2014-09-14 03:50:15 +10:00
Matt Joiner 4bcfdc8fc9 Suppress metadata extension message errors from Xunlei client 2014-09-14 03:47:47 +10:00
Matt Joiner f2bb5b1c56 Increase peer connection buffer size from default (4096) to 20KiB
This reduces syscall overhead which becoming noticeable.
2014-09-14 03:47:06 +10:00
Matt Joiner 7fccb77ebe Treat ECONNRESET and i/o timeout from peers as EOF 2014-09-14 03:45:38 +10:00
Matt Joiner c0d7b2fbf2 Rename and improve downloaded chunk counters and status per connection 2014-09-11 20:30:13 +10:00
Matt Joiner 2b360b641c Don't log extension message parsing errors from -SD0100- 2014-09-11 14:20:47 +10:00
Matt Joiner 689fe85134 Disable TCP linger for peer connections 2014-08-28 10:06:57 +10:00
Matt Joiner ed08bd2837 Introduce socket/torrent limits, work in progress 2014-08-28 10:06:36 +10:00
Matt Joiner d5a2bc67f7 Misc tweaks 2014-08-28 10:05:41 +10:00
Matt Joiner e09e21fab2 Fixes to closing torrents and connections 2014-08-28 10:04:44 +10:00
Matt Joiner 7e19c9c12b Forgot to commit duplicateConnsAvoided expvar 2014-08-28 09:45:58 +10:00
Matt Joiner e79f1bcbf7 Keep track of ongoing handshakes and add timeouts to connection sockets 2014-08-28 09:45:20 +10:00
Matt Joiner c33b889b5e Cease networking on a torrent if it's finished and we're not going to seed 2014-08-28 09:39:27 +10:00
Matt Joiner 2765ad04ca Avoid connecting to the same peer twice by address 2014-08-28 09:35:13 +10:00
Matt Joiner aeee372506 Add useful new metrics to connection 2014-08-28 09:32:49 +10:00
Matt Joiner 035edbaf85 Rename connection.closed->closing 2014-08-28 09:31:05 +10:00
Matt Joiner 2d9c22ae1e Misc trivial improvements 2014-08-25 22:14:10 +10:00
Matt Joiner 891745360e Add a date to the metadata packet client version string 2014-08-25 22:12:50 +10:00
Matt Joiner c9bc892789 Implement the DHT Port message 2014-08-25 22:12:16 +10:00
Matt Joiner 6aa459dc0d Stop announcing on DHT if a torrent is removed 2014-08-25 06:01:05 +10:00
Matt Joiner 78ed2c74d0 Make NoUpload a client configuration option and use it for torrentfs 2014-08-25 06:00:29 +10:00
Matt Joiner c8f335182f Improve incomplete piece ordering, responsive download strategy 2014-08-25 05:31:34 +10:00
Matt Joiner 8f89d7a07e Use CopyExact when extracting handshake read 2014-08-25 05:25:52 +10:00
Matt Joiner 0b01c597c0 Let client.DataWaiter have its own mutex 2014-08-25 05:24:18 +10:00
Matt Joiner 8db966cd42 Make use of levelmu to prioritize client.TorrentReadAt 2014-08-25 05:23:28 +10:00
Matt Joiner 8f065e473f Add some checks to TorrentReadAt for 0 byte reads 2014-08-24 06:54:14 +10:00