Matt Joiner
efe294ac35
utp package merged PacketConn with Socket
2015-10-04 00:02:14 +10:00
Matt Joiner
b7a8bb7570
Simplify the torrent Data interface
...
None of the methods are optional anymore. Removed the nasty wrappers for some data implementations. Moved data.Data back into the main torrent package. Should make it much easier to understand for people implementing their own Data implementations.
2015-10-02 00:09:04 +10:00
Matt Joiner
58c997210e
Track peer sources with a dict, and don't exceed high water mark
2015-09-28 15:30:13 +10:00
Matt Joiner
53259397fc
Initialize connection piece priorities lazily, and using a pool
2015-09-26 17:27:35 +10:00
Matt Joiner
22428da0e3
Add packed IP list
...
This saves a lot of memory by allowing the IP blocklist to be mmap()ed in. In production with the latest level1 blocklist it's 35MB per process.
2015-09-23 18:25:22 +10:00
Matt Joiner
0fa547e292
Don't warn about zero port peers from trackers
2015-09-20 21:09:10 +10:00
Matt Joiner
cd96dbcd9d
Tidy
2015-09-17 12:54:03 +10:00
Matt Joiner
11d703fbf1
Count failed chunk sends against a connection
2015-09-17 12:50:29 +10:00
Matt Joiner
9f324d04e2
Tweak logging
2015-09-17 12:40:35 +10:00
Matt Joiner
0113776f1d
Reduce noise about zero port peers
2015-09-17 12:39:51 +10:00
Matt Joiner
313adf1d2f
Some code missed in the last commit ಠ_ಠ
2015-09-06 12:35:56 +10:00
Matt Joiner
eebd09c0fe
Allow subscribing to torrent piece state changes
2015-09-06 12:33:22 +10:00
Matt Joiner
4472a0e27a
Add Debug flag to Config
...
I'll use this to squash the noisy logging for people who don't care.
2015-08-23 12:59:03 +10:00
Matt Joiner
698181e470
Code comment
2015-08-23 12:49:35 +10:00
Matt Joiner
1db00a54f0
Redo the compact peer types
2015-08-17 19:52:47 +10:00
Matt Joiner
6b27e1473d
Upload after a piece completes
2015-08-12 17:11:14 +10:00
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
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
92e1e505b4
Improve log message
2015-08-04 01:33:50 +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
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
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
68e3b9f666
dht: Block bad nodes, start by banning those that send port=0
2015-08-04 00:31:53 +10:00
Matt Joiner
1f008fb4f0
Trivial missed changes
2015-08-02 21:00:49 +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
e5acfcbb46
Comments
2015-08-02 03:53:37 +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
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
7e9fe4f447
Store chunk data without holding client lock
2015-07-15 16:00:59 +10:00
Matt Joiner
c018c660f0
Allow chunk size to be specified per torrent
2015-07-15 15:31:18 +10:00
Matt Joiner
4807f12ea1
When seeding, actually seed beyond 6 chunks
2015-07-15 15:29:53 +10:00
Matt Joiner
08f89c49f3
Don't raise piece priority while hashing or if piece complete
2015-07-04 13:38:42 +10:00
Matt Joiner
fd2824f595
Raise socketsPerTorrent to 80
2015-06-30 00:46:43 +10:00
Matt Joiner
bb28ff7492
Replace pruning timer with as-required connection dropping
2015-06-30 00:45:26 +10:00
Matt Joiner
1595f65ac2
Adjust some expvars
2015-06-30 00:35:47 +10:00
Matt Joiner
2277e16dca
Rename and sort some of the expvars
2015-06-28 16:41:51 +10:00