Commit Graph

358 Commits

Author SHA1 Message Date
Matt Joiner f5bd377941 Change pieceIndex to peer_protocol.Integer 2018-07-12 09:15:15 +10:00
Matt Joiner 2685ef6aa9 Use half open limit directly from Config 2018-07-10 12:23:00 +10:00
Matt Joiner 1f6ba94882 Make extended handshake a struct, and move a bunch of extended stuff into peer_protocol 2018-07-10 12:20:36 +10:00
Matt Joiner e3cb94006c Reinstate the reduce dial timeout and update some values
Fixes #263
2018-07-10 11:19:14 +10:00
Matt Joiner 316640f921 Fix panic when failing to parse tracker URL 2018-07-07 11:35:47 +10:00
Matt Joiner b2117bc571 Use timers for duplicate requests
Nothing was triggering request updates when timeouts expired. This is the simplest fix, no performance considered.
2018-06-30 00:10:31 +10:00
Matt Joiner 8255194c64 Fix racy Torrent.wantConns check when adding connections 2018-06-26 20:47:21 +10:00
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