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

280 Commits

Author SHA1 Message Date
Matt Joiner
8a43910e2d connection.writer wasn't checking closed state 2018-02-02 13:36:18 +11:00
Matt Joiner
7b037cd024 Missed sendChunk invocation change 2018-02-02 13:34:35 +11:00
Matt Joiner
97ffe39561 Move sendChunk onto connection 2018-02-02 13:26:04 +11:00
Matt Joiner
186c5df3d3 When seeding, connections are not just useful when they're interested
Improves peer selection when seeding is enabled, we're still downloading.
2018-02-01 18:49:53 +11:00
Matt Joiner
2166bf1ec0 Some changes to status output 2018-02-01 18:45:58 +11:00
Matt Joiner
1e9f342a15 Merge piece and chunk iter inputs to nextRequestState
This will allow the iterator to filter chunks for request strategies.
2018-02-01 16:14:13 +11:00
Matt Joiner
3217c5012a Code comments 2018-02-01 14:46:48 +11:00
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
ef4c0f1413 Add Torrent.Stats.ConnectedSeeders
Fixes #231
2018-01-29 18:22:21 +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
4807d05018 Improve some comments 2018-01-25 17:02:52 +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
8eb1a3effe Screen negative pieces
Should fix #228.
2018-01-09 17:26:01 +11:00
Matt Joiner
ff6f28f87c Fix a log format string 2018-01-07 19:24:00 +11:00
Matt Joiner
e13b0eccbf Make peerID a public type
Wanted it applied to Client Status output
2018-01-06 15:50:45 +11:00
Matt Joiner
c44ee5fec4 Use peerID type more, and make its Stringer output nicer 2018-01-06 12:34:31 +11:00
Matt Joiner
8195e8df7b Improve some doc comments 2017-12-29 12:16:05 +11:00
Matt Joiner
f408e19a7a Survive panics while writing chunks
Also improve the comment on that code
2017-12-29 12:15:33 +11:00
Matt Joiner
898db894e0 When queuing a piece for hashing after receiving a chunk, clear all the dirty chunks
This should fix a bug triggered by storage inconsistencies.
2017-12-28 23:59:30 +11:00
Matt Joiner
fa7c2e2bc6 Code comments 2017-12-03 00:35:09 +11:00
Matt Joiner
4190856b6c sortimports 2017-12-01 18:12:29 +11:00
Matt Joiner
1b9606ae75 The "m" field in the extended handshake is not mandatory 2017-11-08 19:29:55 +11:00
Matt Joiner
9757f04cf8 Apply megacheck to torrent package 2017-11-07 16:11:59 +11:00
Matt Joiner
62b1e1b749 Unbiased request ordering was requesting chunks the peer doesn't have 2017-11-06 14:53:00 +11:00
Matt Joiner
be33fc4476 Kick connections requesting pieces we don't have
This was removed at some point, and made the requests received for missing pieces expvar unused.
2017-11-05 15:39:36 +11:00
Matt Joiner
361c8654c7 Add some TODOs 2017-11-05 15:39:35 +11:00
Matt Joiner
f12058fc74 Add missing whitespace 2017-11-04 17:08:02 +11:00
Matt Joiner
426c6fec65 Improve upload rate limit burst size panic message
Should help with #202.
2017-11-04 16:58:38 +11:00
Matt Joiner
7e857c875e If closing a connection Conn fails we can't do anything, and there's nothing to say 2017-10-12 17:51:47 +11: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
326f60b319 Reduce system call overhead reading from connections 2017-09-21 19:29:56 +10:00
Matt Joiner
67e96686d2 Also post cancels
Should mean that we don't have to wait for the peer requests low water mark before we process chunks to cancel.
2017-09-18 13:47:49 +10:00
Matt Joiner
3ed8274384 Abstract out making a cancel message 2017-09-18 13:42:42 +10:00
Matt Joiner
0790516440 Only run connection.Close once
Avoids unnecessary error messages for net.Conn.Close
2017-09-18 13:40:36 +10:00
Matt Joiner
c85aac6383 Log errors closing connection net.Conn's 2017-09-18 12:16:59 +10:00
Matt Joiner
bb53c97d38 Move uploading to the connection writer 2017-09-18 12:09:08 +10:00
Matt Joiner
881f1a7e35 Support plaintext crypto method for protocol header encryption 2017-09-13 18:20:20 +10:00
Matt Joiner
4e8f6b8e5b Optimize nextRequestState to return cancel and new requests, and reinstate requestsLowWater 2017-09-02 10:36:43 +10:00
Matt Joiner
bad6f07f5e Wrap writerCond in tickleWriter and be more selective about using it 2017-09-01 15:26:50 +10:00
Matt Joiner
110764480e Avoid triggering writer cond where possible 2017-09-01 12:09:41 +10:00
Matt Joiner
361cdc0e08 Track buffered but not posted messages, and unify the expvar names for those counters 2017-09-01 10:53:59 +10:00
Matt Joiner
e3479b0bb3 Remove unused code 2017-09-01 10:46:26 +10:00
Matt Joiner
d934ec7e30 Add some variables to track fillBuffer effectiveness 2017-09-01 10:36:43 +10:00
Matt Joiner
13e79039f2 Generate requests, cancels and interest state in the connection writer 2017-08-31 23:48:52 +10:00
Matt Joiner
986b9093a0 Make connection.writer pull from a buffer 2017-08-31 16:26:45 +10:00
Matt Joiner
c4f5a49c97 Panics while decoding messages in connection.mainLoopRead would trigger more panics 2017-08-31 16:25:49 +10:00
Matt Joiner
a8a1ea755d Remove unused functions 2017-08-26 13:23:04 +10:00
Matt Joiner
b2d2c524c6 Fix sync.Mutex copy by value
Found by go vet, per https://github.com/anacrolix/torrent/issues/179.
2017-08-25 16:36:34 +10:00
Matt Joiner
76c60ffa77 Try a state-delta function for updating request state
Also adds Torrent.networkingEnabled, though it isn't yet useful.
2017-08-18 01:51:02 +10:00
Matt Joiner
493916c279 Rename Torrent.connHasWantedPieces->connection.peerHasWantedPieces 2017-08-18 01:48:19 +10:00