Matt Joiner
c921242f30
Do requests synchronously, and don't request from hashing or queued pieces
...
Calculating the desired state was a nice idea, but too hard to debug. This way should also be faster.
2018-06-26 14:51:55 +10:00
Matt Joiner
7dd532d46f
Check that chunks we request aren't being hashed or queued for hash
2018-06-26 13:04:15 +10:00
Matt Joiner
85dc3c204a
Rework stats for receiving chunks
...
Related to #253 .
2018-06-25 14:06:30 +10:00
Matt Joiner
195695042d
Add requestStrategy 3, which duplicates requests only after a timeout
...
Possible solution for #253 .
2018-06-24 20:04:31 +10:00
Matt Joiner
159c4a0e28
Ensure 64-bit alignment of ConnStats fields
...
Fixes #262 .
2018-06-23 18:33:56 +10:00
Matt Joiner
96050948c2
Use scope timer in Torrent.writeChunk
2018-06-21 23:22:13 +10:00
Matt Joiner
4fafad46b2
Log and handle error with bad tracker URLs
2018-06-17 16:19:24 +10:00
Matt Joiner
174120e1e8
Rework Torrent pending requests assertions
...
Should provide more info, and sooner for #249 .
2018-06-16 17:00:50 +10:00
Matt Joiner
0caafd8e87
Allow dropping connections to the same peer ID
...
Necessary for a test that expects one connection to each other Client.
2018-06-16 16:40:37 +10:00
Matt Joiner
0f90af85f1
Torrent.Stats: RLock instead of Lock
2018-06-16 16:38:14 +10:00
Matt Joiner
ad5e44eaf5
Add lots of new expvars and perf timers
2018-06-15 22:42:05 +10:00
Matt Joiner
90f84bda71
Allow adding duplicate connections
...
I believe this fixes a long-standing race condition when dropping connections to the same peer ID where Clients assume the peer has added connections in the same order. Further commits may address duplicate connections further.
2018-06-13 10:53:11 +10:00
Matt Joiner
224522545b
Fix build error with recent go version
2018-06-12 21:51:34 +10:00
Matt Joiner
360e1dbdd1
Track ConnStats with atomics
2018-06-12 20:21:53 +10:00
Matt Joiner
a287d069a4
Fix crash adding peers when Torrent is closed
2018-06-12 20:17:15 +10:00
Matt Joiner
cea5584d6b
Track outgoing through a new field on connection, and rework duplicate connection preferencing
2018-06-12 20:14:00 +10:00
Matt Joiner
ac6ba9f021
Add ConnStats at Client level
...
ConnStats management is refactored to make this less tedious.
2018-06-10 09:20:33 +10:00
Matt Joiner
df38775630
A few adjustments to prioritized peers usage
2018-04-14 21:44:41 +10:00
Matt Joiner
ed75065f76
Reinstate Uploaded and Downloaded values in tracker announces
...
Fixes followup comment in #71 .
2018-04-12 16:12:14 +10:00
Matt Joiner
319e57d1c6
Rework conns to/and allow multiple DHT servers
...
This will help with #229 , and IPv6 support.
2018-04-12 11:41:07 +10:00
Matt Joiner
92f6209c5f
Prioritize pending nodes with BEP 40
2018-04-04 17:59:28 +10:00
Matt Joiner
8f7408b1f9
IPv6 tracker support
2018-02-19 16:19:18 +11:00
Matt Joiner
9513270c06
Trackers shown are just the enabled ones
2018-02-17 11:13:48 +11:00
Matt Joiner
377cb62da9
Make half-open connection limit more dynamic
2018-02-16 12:15:07 +11:00
Matt Joiner
dbb2936cdf
TODO
2018-02-16 11:03:21 +11:00
Matt Joiner
70010ce691
Support IPv6 peers over PEX
2018-02-13 00:50:32 +11:00
Matt Joiner
fadbd68d99
Count peers not added because of bad addresses and rearrange method
2018-02-08 23:55:28 +11:00
Matt Joiner
898e878c69
Aggressively wake Readers
2018-02-04 22:47:01 +11:00
Matt Joiner
44e44637bf
TODOs and comments
2018-02-04 19:14:07 +11:00
Matt Joiner
e0c2265cb0
Support sending HaveAll
2018-02-04 19:10:25 +11:00
Matt Joiner
ec7b90db45
connections should not be added if the Torrent is closed
2018-02-04 13:00:08 +11:00
Matt Joiner
ea8659c951
Move initiateConn and openNewConns onto Torrent
2018-02-04 12:59:23 +11:00
Matt Joiner
e67b85215c
Piece.everHashed is replaced by storageCompletionOk
2018-02-03 12:14:39 +11:00
Matt Joiner
f23d097502
Include closed connections in dirtiers
2018-02-03 12:08:16 +11:00
Matt Joiner
9567aa901c
Add missing increments to some stats
2018-02-03 11:53:11 +11:00
Matt Joiner
5a4e8cd4c5
Rename and rearrange some conn stats
2018-02-03 00:41:13 +11:00
Matt Joiner
fe991128ed
Rework connection stat reconciliation with Torrent and refactor doppleganger handling
2018-02-02 19:07:20 +11:00
Matt Joiner
b0c1f99509
Merge a bunch of stuff into ConnStats and refactor connection.upload
2018-02-02 19:04:56 +11:00
Matt Joiner
8a43910e2d
connection.writer wasn't checking closed state
2018-02-02 13:36:18 +11:00
Matt Joiner
2166bf1ec0
Some changes to status output
2018-02-01 18:45:58 +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
1a7708b484
sortimports
2018-01-31 16:42:40 +11:00
Matt Joiner
ceaf5a2360
Add some sanity checks to priorities extracted from Torrent.pendingPieces
2018-01-29 18:22:21 +11:00
Matt Joiner
77806c1f49
More development of the new logging interface
2018-01-29 18:22:21 +11:00
Matt Joiner
ef4c0f1413
Add Torrent.Stats.ConnectedSeeders
...
Fixes #231
2018-01-29 18:22:21 +11:00
Matt Joiner
53e32ca9dd
Start using new log package
2018-01-28 16:07:11 +11:00
Matt Joiner
5ef22a978b
Synchronize piece completion on piece hash failure
...
Pieces that were unknown, remained unknown despite hashing for that very reason.
2018-01-28 16:02:14 +11:00
Matt Joiner
906d3bc5bb
Include completion known in PieceState
2018-01-28 15:58:55 +11:00
Matt Joiner
de928be582
Remove premature update to piece priority after piece is completed
...
This should have prevented Torrent.piecePriorityChanged from being called, meaning requests for the completed piece were not canceled, and the piece remained in connection's piece request queue, which meant wasted effort downloading chunks for an already acquired piece.
Thanks to @elgatito for discovering the issue.
2018-01-28 15:52:14 +11:00
Matt Joiner
1725fc9a36
Include torrent stats in status
2018-01-27 14:31:46 +11:00