2
0
mirror of synced 2025-02-24 22:58:28 +00:00

249 Commits

Author SHA1 Message Date
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
Matt Joiner
326b36545b Prepare to allow max conns per torrent to be configured 2016-07-05 16:23:17 +10:00
Matt Joiner
12191dbfa3 Add counters for uploads
Fixes #71.
2016-07-05 15:52:33 +10:00