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

280 Commits

Author SHA1 Message Date
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
Matt Joiner
874bba43f8 Fix crash causing deadlock in connection writer when no messages have been posted yet 2016-06-27 15:45:15 +10:00
Matt Joiner
6cac882030 Reduce the impact of preferring earlier pieces
I think urgent pieces at the end of a torrent were getting fairly starved.
2016-05-28 22:04:33 +10:00
Matt Joiner
b55e67dc22 Ban IPs that contribute to failed piece checks 2016-05-24 02:09:47 +10:00
Matt Joiner
d2951c6c4b Move requestPendingMetadata onto connection from Client 2016-05-16 18:46:38 +10:00
Matt Joiner
dcfee93f96 Fix race marshalling a bitfield after a Have has also been posted 2016-05-11 23:50:21 +10:00
Matt Joiner
69643860ea Move some behaviour into Client.newConnection 2016-05-07 18:57:38 +10:00
Matt Joiner
0fd73396fd missinggo.Event changed, connection.writeOptimizer changes 2016-05-07 18:56:44 +10:00
Matt Joiner
63c5ca1f01 Fix crash when peers have sent undersized bitfields and we get the torrent info 2016-04-30 04:08:02 +10:00
Seth Hoenig
9f4bf70e17 refactor struct identifiers to follow conventional go names 2016-04-18 23:11:11 -05:00
Matt Joiner
d3a1c79c79 Merge Torrent and torrent types 2016-04-03 18:40:43 +10:00
Matt Joiner
bfd0b86441 Tidy up the peer have{,all,none},bitfield handling 2016-03-22 12:07:03 +11:00
Matt Joiner
99fa0c26aa Make peerGotPiece a method on connection 2016-03-21 14:19:51 +11:00
Matt Joiner
1508e02935 Move peerGotPiece 2016-03-21 14:17:15 +11:00
Matt Joiner
409d3695a6 Favour earlier pieces slightly, helps with in-order downloads 2016-03-19 17:40:18 +11:00
Matt Joiner
a6759b321a Only assert we should be requesting a piece in debug mode 2016-02-15 17:47:04 +11:00
Matt Joiner
5b5ecb8f3b Still update a connections piece priority even if the peer doesn't have the piece 2016-02-10 00:47:53 +11:00
Matt Joiner
26fa2c4af8 Track posted message type counts 2016-02-10 00:45:47 +11:00
Matt Joiner
3df7d61836 Reintroduce 64 outbound request cap 2016-02-08 16:09:12 +11:00
Matt Joiner
77d6e9e5cb Use new missinggo iterator style, and speed up torrent.connHasWantedPieces() 2016-02-07 01:22:31 +11:00