Matt Joiner
8479f215e0
Don't return if there's an error accepting
...
This happens if there's too many file descriptors, and left the client unresponsive.
2018-07-22 12:58:41 +10:00
Matt Joiner
d4d3e24c6f
Track metadata chunks read with its own Count
2018-07-15 10:09:58 +10:00
Matt Joiner
d4d8f78906
Send extended message before fast/bitfield
...
This is how Transmission does it.
2018-07-14 11:28:54 +10:00
Matt Joiner
f5bd377941
Change pieceIndex to peer_protocol.Integer
2018-07-12 09:15:15 +10:00
Matt Joiner
ba8ec1a787
Move back to net.IP for extended handshake message IPs
2018-07-12 00:00:07 +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
fad06c7ddf
sortimports
2018-07-07 11:36:58 +10:00
Matt Joiner
e1d6fc2341
Add torrent.InfoHash type alias
2018-07-07 11:32:52 +10:00
Matt Joiner
76a3c0891a
Expose handshake stuff in peer_protocol
2018-07-07 11:31:29 +10:00
Matt Joiner
5f20a21c9d
Change the duplicateRequestTimeout to 1s
2018-06-30 21:10:48 +10:00
Matt Joiner
60dd0eed53
Make requestStrategy 3 the default
...
Fixes #253 .
2018-06-28 12:06:21 +10:00
Matt Joiner
7619994ef5
Remove premature initialization of Torrent.lastRequested
2018-06-25 14:03:22 +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
70093a4db3
Update accept limit parameters
2018-06-22 17:43:02 +10:00
Matt Joiner
f137bfdd61
Use RLock for Client.WriteStatus
2018-06-17 16:11:50 +10:00
Matt Joiner
70dfc1f518
Allow disabling accept limiting and modify some constants
2018-06-16 16:37:13 +10:00
Matt Joiner
0854161e99
Clear accept limits when adding a new torrent
2018-06-16 16:34:35 +10:00
Matt Joiner
e97f487d2e
Rename Config->ClientConfig and change how defaults work
...
This is a very breaking change.
2018-06-16 16:30:04 +10:00
Matt Joiner
ad5e44eaf5
Add lots of new expvars and perf timers
2018-06-15 22:42:05 +10:00
Matt Joiner
81dcb9b779
Remove old Client.dialTCP
2018-06-15 22:39:37 +10:00
Matt Joiner
8acfc5149b
Rate limit incoming IP prefixes
...
Lots of bad or dishonest incoming handshakes for unwanted torrents.
2018-06-15 22:38:11 +10:00
Matt Joiner
fd0fb0051b
Update dial expvars
2018-06-15 14:30:31 +10:00
Matt Joiner
da4a6503c2
Fix race condition in Client.ListenAddrs
2018-06-13 10:53:38 +10:00
Matt Joiner
856d5083b5
Update log call
2018-06-12 20:22:54 +10:00
Matt Joiner
360e1dbdd1
Track ConnStats with atomics
2018-06-12 20:21:53 +10:00
Matt Joiner
b024e1cff6
Remove unnecessary use of go keyword
2018-06-12 20:16:17 +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
ab48d4731c
Include rate limiting and stats in BenchmarkConnectionMainReadLoop
2018-06-11 12:20:51 +10:00
Matt Joiner
5a53d29c75
Minimize lock time in Client.acceptConnections
2018-06-10 10:29:19 +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
Denis
f6ed514c3b
added proxy support to the library, using ProxyURL parameter. ( #256 )
2018-06-08 20:52:36 +10:00
Matt Joiner
15b828515e
Don't listen on IPv6 if DisableIPv6 is set
...
Fixes #250
2018-05-02 19:24:46 +10:00
Matt Joiner
df38775630
A few adjustments to prioritized peers usage
2018-04-14 21:44:41 +10:00
Matt Joiner
610dbd17ba
Fix #244
2018-04-14 21:43:08 +10:00
Matt Joiner
5c81c6c70a
Include connection network in log message
2018-04-14 11:24:06 +10:00
Matt Joiner
0290a1610a
Merge branch 'circleci'
...
# Conflicts:
# client.go
2018-04-12 17:28:13 +10:00
Matt Joiner
e38216a472
Add comment
2018-04-12 16:12:27 +10:00
Matt Joiner
485d8cdf61
Use new DHT stats fields
2018-04-12 16:11:22 +10:00
Matt Joiner
8a8fe378d4
Improve DHT status output
2018-04-12 15:12:15 +10:00
Matt Joiner
b5df073217
Support different hosts for each network
...
CircleCI's localhost hostname doesn't resolve for IPv6.
2018-04-12 15:06:53 +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
fc03dcb859
Set the connection.cryptoMethod
...
It was unwittingly dropped from received connections, and may never have been set for initiated connections.
2018-02-16 10:59:56 +11:00
Matt Joiner
b92e8b7814
Add support for disabling IPv4 and IPv4 peers
2018-02-16 10:46:11 +11:00
Matt Joiner
066cdd520b
Add mse.CryptoMethod type
2018-02-16 10:36:29 +11:00
Matt Joiner
0aad14afd1
Add a check for a strange panic in production
2018-02-15 16:03:44 +11:00
Matt Joiner
39bde7237e
Try to count IPv6 connections
2018-02-13 00:48:21 +11:00
Matt Joiner
dd9244c01d
bencode: Unmarshal now returns an error on unused trailing bytes
2018-02-13 00:21:28 +11:00
Matt Joiner
57216bd299
Standardize on krpc types, and extend PEX message type for IPv6
2018-02-11 15:13:00 +11:00
Matt Joiner
8d1995c4d4
Support IPv6 blocklists
...
Existing packed blocklists need to be regenerated.
2018-02-11 15:11:26 +11:00
Matt Joiner
924b916b2a
Expose Client.Closed
2018-02-08 23:57:53 +11:00
Matt Joiner
f57437201e
Send bitfield messages before other initial messages
2018-02-05 17:41:53 +11:00
Matt Joiner
e0c2265cb0
Support sending HaveAll
2018-02-04 19:10:25 +11:00
Matt Joiner
ea8659c951
Move initiateConn and openNewConns onto Torrent
2018-02-04 12:59:23 +11:00
Matt Joiner
efecf88d3c
Use flip buffering for connection writing
2018-02-03 15:09:38 +11:00
Matt Joiner
085e676ef0
Generate default peerExtensionBytes using helpers
2018-02-03 13:36:17 +11:00
Matt Joiner
9567aa901c
Add missing increments to some stats
2018-02-03 11:53:11 +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
97ffe39561
Move sendChunk onto connection
2018-02-02 13:26:04 +11:00
Matt Joiner
1a7708b484
sortimports
2018-01-31 16:42:40 +11:00
Matt Joiner
77806c1f49
More development of the new logging interface
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
e08d11a4b9
Update Client.newConnection with changed rateLimitedReader interface
2018-01-28 15:42:37 +11:00
Matt Joiner
51b3374015
Add very tentative UPnP NAT traversal
...
Relates to #230
2018-01-25 13:14:20 +11:00
Matt Joiner
9285470cc6
Improve some log messages
2018-01-25 13:10:52 +11:00
Matt Joiner
56109b387d
Formatting and comments
2018-01-06 16:37:40 +11:00
Matt Joiner
e13b0eccbf
Make peerID a public type
...
Wanted it applied to Client Status output
2018-01-06 15:50:45 +11:00
Matt Joiner
c44ee5fec4
Use peerID type more, and make its Stringer output nicer
2018-01-06 12:34:31 +11:00
Matt Joiner
8f7720edb2
Merge commit '6ab65a49a8a72dea1a28968b2ab42a85fd4566ec'
...
# Conflicts:
# config.go
2017-11-08 20:23:15 +11:00
Matt Joiner
3aa1e8f3ef
Add a test for behaviour after getting metadata_size and before GotInfo
...
#208
2017-11-08 19:31:10 +11:00
Matt Joiner
8712cc25d0
Make Client.PeerID return [20]byte
2017-11-08 19:28:37 +11:00
Matt Joiner
7eb62eec0d
Move some code around
2017-11-08 15:00:18 +11:00
themihai
6ab65a49a8
feat(config): Allows the torrent client to customise the client identity and connection config
2017-11-07 20:14:13 +02:00
Matt Joiner
9757f04cf8
Apply megacheck to torrent package
2017-11-07 16:11:59 +11:00
Matt Joiner
82093937d5
Ignore expected error
2017-11-06 14:01:07 +11:00
Matt Joiner
6aad8041ab
Implement new request strategy
...
The new strategy, 2, has the fastest connection download by priority in order, and all other pieces stick to a randomized ordering that's stable per connection.
2017-09-23 15:25:47 +10:00
Matt Joiner
bb53c97d38
Move uploading to the connection writer
2017-09-18 12:09:08 +10:00
Matt Joiner
ed0fa62340
Comment and formatting
2017-09-17 00:45:12 +10:00
Matt Joiner
b39df82fbc
Include peer data with half open connections
2017-09-15 19:10:09 +10:00
Matt Joiner
846ac2d33e
Herp
2017-09-15 12:56:54 +10:00
Matt Joiner
d4576a56d9
Add some expvars to track uTP/TCP and PHE fallbacks for outgoing connections
2017-09-15 12:56:15 +10:00
Matt Joiner
881f1a7e35
Support plaintext crypto method for protocol header encryption
2017-09-13 18:20:20 +10:00
Matt Joiner
110764480e
Avoid triggering writer cond where possible
2017-09-01 12:09:41 +10:00
Matt Joiner
13e79039f2
Generate requests, cancels and interest state in the connection writer
2017-08-31 23:48:52 +10:00
Matt Joiner
986b9093a0
Make connection.writer pull from a buffer
2017-08-31 16:26:45 +10:00
Matt Joiner
0388ec1eee
Synchronize Torrent.Info
2017-08-29 15:16:53 +10:00
Matt Joiner
a8a1ea755d
Remove unused functions
2017-08-26 13:23:04 +10:00
Matt Joiner
401974dd8d
dht.ServerConfig.StartingNodes is now a function
...
Additionally cmd/torrentfs uses the global bootstrap nodes for its DHT. Aids with https://github.com/anacrolix/torrent/issues/180
2017-08-25 16:28:27 +10:00
Matt Joiner
97cb41a5c9
Provide default starting nodes to DHT if default torrent client config is used
...
https://github.com/anacrolix/torrent/issues/178
2017-08-18 11:14:28 +10:00
Matt Joiner
76c60ffa77
Try a state-delta function for updating request state
...
Also adds Torrent.networkingEnabled, though it isn't yet useful.
2017-08-18 01:51:02 +10:00
Matt Joiner
170bb72c34
Augment dialed connection timeouts with context.Context
...
Works toward a dial timeout for half open connections. https://github.com/anacrolix/torrent/issues/169
2017-08-16 17:05:05 +10:00
Matt Joiner
9bec8f6a95
Use net.Dialer for TCP
2017-08-16 15:48:30 +10:00
Matt Joiner
8317417910
Use DialContext instead of DialTimeout with utp
2017-08-16 15:35:17 +10:00
Matt Joiner
2d59d48015
Some tidying in Client.dialFirst
2017-08-16 10:32:25 +10:00
Matt Joiner
5099d8e33f
DHT bootstrap is not asynchronous
2017-08-10 11:18:48 +10:00