2
0
mirror of synced 2025-02-25 07:05:38 +00:00

1015 Commits

Author SHA1 Message Date
Matt Joiner
6c8c870b28 Log zero ports from trackers 2015-08-06 08:58:13 +10:00
Matt Joiner
cb00308157 Back off on the kicked connections log 2015-08-06 08:56:36 +10:00
Matt Joiner
59e50bd614 Log who's giving us zero ports over PEX
In the long run this will help determine why this happens.
2015-08-06 08:55:48 +10:00
Matt Joiner
502a7ebebd utp.NewSocket now takes network parameter 2015-08-05 02:51:40 +10:00
Matt Joiner
5d5ee66be4 Clear piece touch flag from connection after a piece is hashed 2015-08-05 02:43:53 +10:00
Matt Joiner
497d185373 Add an option to disable IPv6 2015-08-05 02:41:50 +10:00
Matt Joiner
085be622a0 Replacing pendingWrites WaitGroup with Mutex/Cond/int
Apparently I've been using WaitGroups wrong all along.
2015-08-05 02:40:46 +10:00
Matt Joiner
19021f1360 Invalid test
The function is never exposed publicly or called without holding the client lock.
2015-08-05 02:38:36 +10:00
Matt Joiner
4fb7d8f4d4 cmd/dht-secure-id 2015-08-05 02:38:02 +10:00
Matt Joiner
a0cdda16a4 dht: Expose SecureNodeId and NodeIdSecure 2015-08-05 02:37:43 +10:00
Matt Joiner
92e1e505b4 Improve log message 2015-08-04 01:33:50 +10:00
Matt Joiner
85a0fe6b61 Drop peers for sending too many unwanted pieces
So the algorithm is now, drop the worst half if they get too old, and drop any connection if it's ratio is poor.
2015-08-04 01:32:45 +10:00
Matt Joiner
da8ac9fe01 Log errant unwanted piece rather than panic
Eventually I'll work out what causes this, but for now it's incredibly rare.
2015-08-04 01:29:40 +10:00
Matt Joiner
5a73f73d97 dht: Count announce errors, don't log them 2015-08-04 01:20:44 +10:00
Matt Joiner
bbe58bbd73 Filter out DHT peers with port 0
Probably not necessary now we ban the nodes that send them, but it's appropriate to check here too.
2015-08-04 01:20:10 +10:00
Matt Joiner
f3317322f8 Fix crash if peer sends out of bounds HAVE message 2015-08-04 01:17:32 +10:00
Matt Joiner
f69c51bea3 Tighten up some potential leaks
Based on some observations of lingering goroutines in unit tests.
2015-08-04 01:15:09 +10:00
Matt Joiner
54339a30e3 Drop connections that contributed to pieces that failed to hash
There are peers out there that seem to intentionally spam bad data, and the same pieces will often fail continuously. This really puts a bee in their bonnet.
2015-08-04 01:12:09 +10:00
Matt Joiner
51aad774ab Add IPBlocklist option to Config, and test it's inherited by DHT 2015-08-04 01:07:22 +10:00
Matt Joiner
8d581ce7f2 Fix utp.Socket leak in test 2015-08-04 00:48:17 +10:00
Matt Joiner
87433b00ba Add File.DisplayPath
It's used in many places, I just never formalized it. This will help prevent bugs and misuse of File.Path
2015-08-04 00:45:15 +10:00
Matt Joiner
f9995244c0 If a DHTConfig was provided without a blocklist, the DHT wouldn't inherit the Client's blocklist 2015-08-04 00:43:46 +10:00
Matt Joiner
6afaa816bf dht: Add PublicIP to config to secure node ID 2015-08-04 00:37:16 +10:00
Matt Joiner
68e3b9f666 dht: Block bad nodes, start by banning those that send port=0 2015-08-04 00:31:53 +10:00
Matt Joiner
d077fed72d Some utils moved to missinggo 2015-08-04 00:29:01 +10:00
Matt Joiner
64848a206a Replace go-check with testify
It's muuuuch better.
2015-08-03 16:23:05 +10:00
Matt Joiner
50ce70c47a Fix locking in data/blob 2015-08-03 14:24:59 +10:00
Matt Joiner
1f008fb4f0 Trivial missed changes 2015-08-02 21:00:49 +10:00
Matt Joiner
0a69176da2 Remove clunky sentence from README 2015-08-02 20:45:26 +10:00
Matt Joiner
1cc50f85a6 connection.writer wasn't working efficiently
Because of the pseudo-random selection of a communication in a select statement, flushing was occuring prematurely. Also the buffer was needlessly large. For large messages, like outgoing pieces, it's probably better they just go straight to the wire anyway.

This change will make it easier to implement sending of pieces that doesn't block control messages in the future. Any time that the buffer is empty, we'll be able to signal that it's an optimal time to send a piece.
2015-08-02 20:39:31 +10:00
Matt Joiner
c735370f9b tracker_test: Check for the error string instead of the type
The type changes from Go 1.4->1.5, and it's not worth tearing it apart.
2015-08-02 14:57:28 +10:00
Matt Joiner
7ecc8108bf Track connection writes and flushes
Helps determine efficiency of the routine.
2015-08-02 14:30:33 +10:00
Matt Joiner
06dede5690 Track the connection flags for completed handshakes 2015-08-02 04:06:22 +10:00
Matt Joiner
34d3d7aca0 Tidy up outbound connection code
Preparing to allow alternate dialing logic.
2015-08-02 04:04:42 +10:00
Matt Joiner
d037e6ee9c Suppress a lot of noisy logging 2015-08-02 04:01:41 +10:00
Matt Joiner
06ebc4c37e Explicitly import Torrent.InfoHash 2015-08-02 03:55:48 +10:00
Matt Joiner
e5acfcbb46 Comments 2015-08-02 03:53:37 +10:00
Matt Joiner
3ef59be02d fs: Remove errant logging 2015-07-22 19:07:01 +10:00
Matt Joiner
8069573abe cmd/torrent: Remove some dead code 2015-07-21 22:54:50 +10:00
Matt Joiner
8ce61e911d Torrent.BytesCompleted was racy 2015-07-21 22:54:02 +10:00
Matt Joiner
78ec88ad02 Don't probe pieces when setting torrent storage
It blocks the caller, for potentially quite some time. I've tested without this for some time now.
2015-07-21 22:52:43 +10:00
Matt Joiner
346c457e9c Hashing was blocking prioritization of pieces 2015-07-21 22:51:15 +10:00
Matt Joiner
428fa03cab Move CI to drone.io
Codeship keeps breaking, and is too painful to use.
2015-07-20 18:48:23 +10:00
Matt Joiner
4805cfbddc Update README 2015-07-19 01:12:50 +10:00
Matt Joiner
84fc3aab0f client.go: Missing perf import 2015-07-17 21:45:44 +10:00
Matt Joiner
0600c3b5e3 Several speedups in logic 2015-07-17 21:07:01 +10:00
Matt Joiner
6c04000644 Downloading a chunk may mean the piece isn't wanted anymore
Hopefully this fixes a very rare logic error in replenishing connection requests for a piece that isn't wanted, yet is still in the connection piece request order.
2015-07-17 21:04:43 +10:00
Matt Joiner
4d3b6e5116 Hold client lock as little as possible in Reader.readAt 2015-07-17 20:59:26 +10:00
Matt Joiner
35fa1e3365 Avoid holding client lock while scanning pieces in File.State
Some torrent data backends are expensive to query.
2015-07-17 20:58:25 +10:00
Matt Joiner
7e9fe4f447 Store chunk data without holding client lock 2015-07-15 16:00:59 +10:00