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
Matt Joiner
4adee001f7
No longer wanting a piece wasn't triggering an update of connection request state
...
Pretty minor, but it would leave connections hanging in the interested state.
2017-08-18 01:44:20 +10:00
Matt Joiner
2624281842
Changes for dht-cleanup
2017-07-21 00:40:49 +10:00
Matt Joiner
79d800fe92
Trivial logging, comment, Stringer changes
2017-02-02 16:53:19 +11:00
Matt Joiner
a11df82349
package itertools API changed
2017-01-14 20:39:48 +11:00
Matt Joiner
5fe36bbb35
Show connection piece request order in text status
2017-01-04 18:09:50 +11:00
Matt Joiner
174cc0e183
Reduce the priority given to earlier pieces. Maximum priority reads at the end of the file aren’t getting enough attention.
2017-01-04 18:08:29 +11:00
Matt Joiner
9cf09dba8a
Remove unused funcs and idents
2017-01-01 11:03:02 +11:00
Matt Joiner
186b5073d2
Move method queuePieceCheck
2017-01-01 11:02:37 +11:00
Matt Joiner
97f6cb496e
Avoid deadlock caused by receiving PORT and and DHT announce_peer at the same time
2016-11-28 00:03:10 +11:00
Matt Joiner
4a7fbf6170
Add peers received from received announce_peer DHT messages to the Client
...
Addresses #133
2016-11-27 00:05:19 +11:00
Matt Joiner
fdf75d59c8
Kick only the worst connection when a piece fails a check
2016-11-23 12:59:23 +11:00
Matt Joiner
57b679ffb0
Add a note about dropping connections that we sent a HAVE for incomplete pieces
2016-11-23 11:52:41 +11:00
Matt Joiner
4807c9e29a
Make Torrent.conns a map
...
Can't remember if I've tried this before. But dropping arbitrary connections while iterating established conns will become much simpler.
2016-11-23 11:48:44 +11:00
Matt Joiner
ebbd555e7b
Move a bunch of Client methods onto more appropriate types
2016-11-22 21:12:53 +11:00
Matt Joiner
90ca45dd2d
Don't accept pieces with bad indexes
...
Fixes #132
2016-11-22 14:20:48 +11:00
Matt Joiner
84d243afca
Rename connection.downloadedChunk -> receiveChunk
2016-11-22 14:18:09 +11:00
Matt Joiner
6f9bcff8b2
Make downloadedChunk a method of connection
2016-11-22 14:17:30 +11:00
Matt Joiner
0d9348c5d1
Move Client.downloadedChunk to connection.go
2016-11-22 14:16:18 +11:00
Matt Joiner
a49e133d8a
Comment on connection.updatePiecePriority
...
There's also Torrent.updatePiecePriority, and it's always confusing what the difference is.
2016-10-31 16:22:07 +11:00
Matt Joiner
1725133111
Move the implementation of connection.requestPiecePendingChunks out of Torrent
2016-10-25 14:58:17 +11:00
Matt Joiner
ed0dbba384
Make newConnection a method on Client
2016-10-10 16:55:56 +11:00
Matt Joiner
c34234bf34
Split connection.rw into separate Reader and Writer
...
This will make it easier to write hooks for Read and Write separately.
2016-10-10 16:30:51 +11:00
Matt Joiner
de761fb506
Do chunk pooling at Torrent instead of connection level
2016-10-05 15:57:00 +11:00
Ye Yin
d3963eedfd
Use sync.pool for decode buffer
2016-09-12 17:32:04 +10:00
Matt Joiner
2fc814b5eb
Move Client.connectionLoop to connection.mainReadLoop
2016-09-11 14:32:56 +10:00
Matt Joiner
e6d7b52638
Speed up connection.lastHelpful
...
Moving to reflection and interfaces has made it a bottleneck.
2016-08-14 22:39:23 +10:00
Matt Joiner
fbe0ded844
Add connection read stats
2016-07-12 16:42:04 +10:00
Matt Joiner
a4e140b939
New slices package
2016-07-12 16:40:14 +10:00
Matt Joiner
240abaf512
Add Torrent.SetMaxEstablishedConns
2016-07-06 00:42:16 +10:00