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

673 Commits

Author SHA1 Message Date
Matt Joiner
00f33c848e Adding a torrent without info after waitAccept has blocked wouldn't trigger further accepts immediately 2016-04-03 22:06:25 +10:00
Matt Joiner
22ad654420 Fix deadlocks in WriteStatus due to incomplete renaming 2016-04-03 20:54:14 +10:00
Matt Joiner
d3a1c79c79 Merge Torrent and torrent types 2016-04-03 18:40:43 +10:00
Matt Joiner
08830b97a1 Make everything on type torrent private 2016-04-03 16:50:53 +10:00
Matt Joiner
bc8fb2a165 If we fail to write to a piece, check its completion state 2016-04-03 16:36:57 +10:00
Matt Joiner
44f5bb73c5 Improve log messages 2016-04-03 16:36:24 +10:00
Matt Joiner
5856b91af0 Fix missinggo import 2016-03-30 19:11:55 +11:00
Matt Joiner
a5b54f21a1 Make opening a torrent in storage an explicit method
This is storage types where opening can fail, like mmap
2016-03-28 22:40:29 +11:00
Matt Joiner
775cf53809 Get mmap storage working 2016-03-28 21:57:04 +11:00
Matt Joiner
b97b50aca9 New storage interface 2016-03-28 20:38:30 +11:00
Matt Joiner
01bef851ed Log connection errors when debug mode 2016-03-22 13:10:18 +11:00
Matt Joiner
bfd0b86441 Tidy up the peer have{,all,none},bitfield handling 2016-03-22 12:07:03 +11:00
Matt Joiner
e2ffcd008b Add t.bytesLeftAnnounce
Now it's safe to remove tracker specific bytesLeft contract
2016-03-22 09:06:48 +11:00
Matt Joiner
782589e2b9 Client.WriteStatus: Raise the precision of the completion percentage 2016-03-22 08:33:08 +11:00
Matt Joiner
99109e636b Use missinggo.AddrPort directly 2016-03-21 16:02:36 +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
b6cd456779 Use new missinggo.SplitHostMaybePort implementation 2016-03-15 21:32:47 +11:00
Matt Joiner
0d5502932d Track accepted connections 2016-03-06 17:26:04 +11:00
Matt Joiner
f436c9c955 Use missinggo.Event to track Client closed 2016-03-05 19:36:21 +11:00
Matt Joiner
c175fab5a6 Fix a UTP Conn leak, on unencrypted followup dial attempts
I would guess that TCP ones were cleaned up by GC.
2016-03-02 23:27:46 +11:00
Matt Joiner
e33006a419 Ignore the corner case when a piece is dropped from storage 2016-02-26 22:12:13 +11:00
Matt Joiner
976510db60 Add DHT nodes from metainfo when added to Client 2016-02-24 21:56:50 +11:00
Matt Joiner
c371502cb3 Fix failure to request data from peers if it goes missing after being downloaded during the same session
The chunks remained marked dirty, even after the piece was marked complete. So when the piece was not complete, there was nothing to do.
2016-02-22 03:23:49 +11:00
Matt Joiner
99e9f41a33 Choke peers when we lose pieces they requested, and drop them if they request pieces we don't have 2016-02-21 17:22:55 +11:00
Matt Joiner
e20858a1e8 Move dataReadAt to torrent.readAt, and do the waitNoPendingWrites check there 2016-02-21 03:32:59 +11:00
Matt Joiner
dcdf85a474 Ditch the torrent stateMu for the client mutex 2016-02-21 03:31:50 +11:00
Matt Joiner
f76d86da4f Use new error handling philosophy 2016-02-20 14:40:28 +11:00
Matt Joiner
b6a1a685cd Remove pointless code 2016-02-17 17:20:43 +11:00
Matt Joiner
0f9f7ba01b Add torrent.completedPieces bitmap
Reduce load on data.PieceComplete for torrents with lots of pieces, when reader position changes. Not sure of the improvement yet.
2016-02-17 00:00:55 +11:00
Matt Joiner
be6052912f Improve error message when piece fails to be completed
Happens occasionally on some servers, can't work out why.
2016-02-16 23:35:19 +11:00
Matt Joiner
b514434581 Trigger piece request order changes on connections in a few spots
The client was requesting already obtained data in certain circumstances. This fixes it.
2016-02-11 17:57:57 +11:00
Matt Joiner
26fa2c4af8 Track posted message type counts 2016-02-10 00:45:47 +11:00
Matt Joiner
317783091d When we're choked, just forget the requests, we don't need to delete them individually anymore 2016-02-08 21:39:15 +11:00
Matt Joiner
c674e0a65f Add some missing calls to torrent.updatePiecePriority 2016-02-08 21:38:30 +11:00
Matt Joiner
24b8b13d2d Fix pending of already completed pieces when pending ranges of pieces 2016-02-08 21:36:50 +11:00
Matt Joiner
096c870029 Fix overpublishing of piece state change during hashing 2016-02-07 21:56:59 +11:00
Matt Joiner
0c28a0f1b1 Use new tracker package interface 2016-02-07 18:49:35 +11:00
Matt Joiner
814daf6420 Publish changes in piece hashing state 2016-02-07 01:21:12 +11:00
Matt Joiner
2e3bc1090b Speed up torrent.needData, and use new missinggo iterator interface 2016-02-07 01:20:40 +11:00
Matt Joiner
9b9a3fb20a Fix the mess that is the connectionLoop after messages are decoded 2016-02-05 01:17:06 +11:00
Matt Joiner
3acdcc3b45 Tidy code 2016-02-04 15:04:46 +11:00
Matt Joiner
430f26f726 Recalculate all piece priorities more efficiently 2016-02-01 22:06:13 +11:00
Matt Joiner
afa264e6c5 Reintroduce connection piece inclinations, and begin caching piece priorities 2016-02-01 21:11:41 +11:00
Matt Joiner
3ed628356b Use missinggo.Event for connection closing event 2016-02-01 21:08:52 +11:00
Matt Joiner
eb838a894c newTorrent doesn't need to return error 2016-02-01 07:05:43 +11:00
Matt Joiner
b90dacd324 Abstract the pendingPieces as a bitmap 2016-02-01 01:46:28 +11:00
Matt Joiner
84c34e2c37 TODO 2016-01-28 13:04:25 +11:00
Matt Joiner
ae9bba2611 Fix downloading of unwanted chunks, and write out downloaded chunks using the connection loop goroutine
Doing the writes with the connection loop goroutine prevents memory use blowing out when chunks aren't written out quickly enough.
2016-01-28 05:54:48 +11:00
Matt Joiner
90348f6a48 Add pending write helpers 2016-01-25 07:22:33 +11:00