Matt Joiner
cb37a914c1
Rename Peer to PeerInfo, and unexport PeerInfos
2020-05-29 19:44:48 +10:00
Matt Joiner
461403c0f5
Fix Client torrent "of %d bytes" in status
2020-05-13 17:32:16 +10:00
Matt Joiner
39171df0c6
Fix PeerConn outgoing field for webrtc
...
Due to jumping straight into handshakes, outgoing=true was assumed. This didn't actually solve the issue I thought it might, but is important for determining "preferred" connection direction, which may result in dropping connections.
2020-05-03 18:37:26 +10:00
Matt Joiner
f36fc10079
Fix crash when announcing unloaded torrent to websocket
2020-05-03 14:10:46 +10:00
Matt Joiner
3e9a5a4aec
Expose ClientConfig.Extensions
...
Also run the storage failure test with fast disabled for the seeder. This probably would have tickled some issues in the past, so it seems like a good place to try it out.
2020-04-23 13:03:40 +10:00
Matt Joiner
a5db7a7fa6
Remove websocket tracker logging level override
2020-04-22 11:41:12 +10:00
Matt Joiner
0ab6d108be
Pool webtorrent tracker websockets at the Client level
2020-04-21 18:08:43 +10:00
Matt Joiner
c074b30d94
Log webrtc connection errors and rework webtorrent.TrackerClient
2020-04-20 13:42:25 +10:00
Matt Joiner
520d3c38e3
Fix some webtorrent PeerConnection leaks
2020-04-20 10:21:31 +10:00
Matt Joiner
d05ce2d274
Update anacrolix/log
2020-04-16 17:20:58 +10:00
Matt Joiner
74986db9ed
Don't try to do conventional dials if we have no dialers
...
Stops us from consuming all the peers we store for no reason.
2020-04-16 12:00:49 +10:00
Matt Joiner
d4430e89b6
Fix crash with conventional trackers when tcp and utp are disabled
...
Fixes #396 .
2020-04-16 10:27:17 +10:00
Matt Joiner
f45dac1e38
Use offer_id for webrtc conn string
2020-04-13 14:04:34 +10:00
Matt Joiner
27bfdd0dbf
Create peer connections when WebRTC connections obtain a data channel
2020-04-07 10:59:10 +10:00
Matt Joiner
378ccd0932
Logging improvements for DHT
2020-03-17 13:48:09 +11:00
Matt Joiner
c83738f3f4
Update to latest anacrolix/dht
2020-03-17 13:47:53 +11:00
Matt Joiner
7fe199992c
Use stable bit set for pending pieces PriorityBitmap
...
Fixes #382 .
2020-02-27 18:33:44 +11:00
Matt Joiner
ddc61845ac
Misc cleanup
2020-02-22 19:38:56 +11:00
Matt Joiner
c855c7a366
Differentiate between storage.ClientImpl{,Closer}
2020-02-21 14:12:44 +11:00
Matt Joiner
ddddc63924
Expose PeerConn.PeerPieces
...
Fixes #375 .
2020-02-21 11:51:24 +11:00
Matt Joiner
dff436f102
Rename connection->PeerConn and fix exports
2020-02-21 11:07:50 +11:00
Matt Joiner
01955ebe80
Tweak DHT status output
2020-02-21 09:47:46 +11:00
Matt Joiner
afe4d8795d
Support custom DHT servers
...
Addresses #266 .
2020-02-20 17:46:29 +11:00
Matt Joiner
71f18f1042
Remove ClientConfig.ProxyURL and DefaultHTTPUserAgent
...
ProxyURL is no longer used for implicit sockets, this will ensure consumers are aware. It's other behaviour is already more correct specified through HTTPProxy.
DefaultHTTPUserAgent was vestigial, and is specified now through the ClientConfig.
2020-02-20 17:04:11 +11:00
Matt Joiner
d24922dc09
Add support for non-IP-based networks
...
Includes a test with unix sockets. Exposes AddDialer, AddListener, and reworks Peer.
2020-02-20 16:47:37 +11:00
Matt Joiner
e9e128cbf8
Split Client dialers and listeners
2020-02-20 11:10:05 +11:00
Matt Joiner
376ff763fe
Apply staticcheck
2020-02-20 11:09:57 +11:00
Matt Joiner
dc39e98cfb
Fix race in requestStrategyThree request timeout callback
2020-01-20 11:51:24 +11:00
Matt Joiner
cfc68d3ae6
Fix bad init of Torrent.requestStrategy
2020-01-14 10:51:09 +11:00
Matt Joiner
2559af0f9c
Extract the request timeout stuff into requestStrategyThree
2020-01-14 10:51:09 +11:00
Matt Joiner
4c989da21e
Extract the request strategy logic
...
Bit messy. Now it'll be easier to clean-up what it depends on, and test.
2020-01-14 10:51:09 +11:00
James Lawrence
ad73cf8611
fixes various vet errors
2020-01-14 09:09:09 +10:00
Matt Joiner
98bd488466
Fix a log level
2020-01-07 10:50:18 +11:00
Matt Joiner
c9f9235117
Fix panic in logging
...
Found by @ccampbell.
2020-01-07 10:44:58 +11:00
Matt Joiner
3a733e530c
Improve logging and errors for accept rate limiting
2020-01-04 17:14:18 +11:00
Sick Yoon
32579e72c7
disable listeners if proxy is configured
2020-01-02 09:18:14 +10:00
Matt Joiner
5f1d937b62
Add connection trust flag, and more tests with small caches
...
Thanks to observations and feedback from @ccampbell.
2019-12-18 13:52:00 +11:00
Matt Joiner
f448f55e88
Coalesce piece state change notifications on client unlock
...
Reported by Craig Campbell <iamcraigcampbell@gmail.com>.
2019-12-13 15:55:56 +11:00
Matt Joiner
659f7e0371
Include traversal stats in completed bootstrap log message
2019-11-07 08:51:14 +11:00
Matt Joiner
0aef469a4c
Use missinggo/v2/conntrack
2019-11-02 22:35:57 +11:00
Matt Joiner
289293f3cc
Rename peer source constants
2019-10-17 17:46:35 +11:00
Matt Joiner
93de711d42
Update dht to include interface change to OnAnnouncePeer
2019-10-17 17:46:09 +11:00
Matt Joiner
99fea719a6
Add Client.String
2019-10-03 19:11:45 +10:00
Matt Joiner
0fd282019e
Add some logging for connections and metadata requests
2019-10-03 19:09:55 +10:00
Matt Joiner
2885426e7e
Prefix torrent logger message text
2019-10-01 21:16:02 +10:00
Matt Joiner
6c8c4a6518
Pass logger to DHTs
2019-09-13 08:46:30 +10:00
Matt Joiner
eb4dad73ae
Lots of improvements to logging
2019-08-22 13:59:04 +10:00
Matt Joiner
cb1bf0f413
goimports -local
2019-08-21 20:58:40 +10:00
Matt Joiner
5a2c1c9b76
Upgrade to simplified logger
2019-08-21 20:44:12 +10:00
Matt Joiner
e3e4a11b16
Add some timing code to Client.dialFirst
2019-08-15 10:17:39 +10:00
Matt Joiner
6013f09f8a
Don't include the handshake in the dial timeout for outgoing connections
2019-08-11 13:17:47 +10:00
Matt Joiner
9224303c1e
Update all imports of dht to v2
2019-08-10 18:46:07 +10:00
Matt Joiner
5f0b040f25
Include remote address when logging failure to establish outbound connection
2019-07-30 17:26:12 +10:00
Matt Joiner
0b15fda7a8
NewClient nil ClientConfig should use dynamic port
...
It's pretty hard to test otherwise, if something's already on the default port.
2019-07-30 17:19:14 +10:00
Matt Joiner
cbc98e17aa
Fix race spewing Client stats
2019-07-30 17:18:09 +10:00
Matt Joiner
3c0588d661
Add some commented out logging
2019-07-19 16:17:38 +10:00
Matt Joiner
338287486f
Always return errors when handshakes or dialing fails
...
I intend to use xerrors-style error handling for special cases.
2019-07-19 16:15:46 +10:00
Matt Joiner
76513bfe0b
Restart dial timeout for fallback header obfuscation attempt
2019-07-19 14:46:48 +10:00
Matt Joiner
5774859701
Try with the non-preferred header obfuscation if there's an error
...
The function called was more selective about what it returned as an error, but that style is outdated (should use xerrors), and no longer returns as expected.
2019-07-19 14:13:42 +10:00
Matt Joiner
1d8873552a
Rework header obfuscation and add tests for fallbacks
2019-07-19 13:23:36 +10:00
Matt Joiner
90355b3dc7
Add dummy code for emulating the bug in #114
...
Useful for ensuring that the test can still reproduce the issue with changes to encryption handling.
2019-07-19 13:07:40 +10:00
Matt Joiner
12958ad384
Refactor Client.dialFirst
2019-06-21 14:50:49 +10:00
Matt Joiner
06ada2ef0f
Remove unnecessary import alias
2019-06-21 14:49:43 +10:00
Matt Joiner
30c705f2f8
Count client listener accepts
2019-06-21 14:49:21 +10:00
BruceWang
60e215aa81
Add OnQuery Hook
2019-05-29 15:08:46 +10:00
Matt Joiner
bc249730aa
Fix segfault on nil conntrack.EntryHandle instance when dialing
...
Fixes https://github.com/anacrolix/torrent/issues/314 . Comments were added to the the conntrack package master, but have no functional change required here.
2019-04-10 18:27:54 +10:00
Matt Joiner
485d6bb6e7
Fix leaked conntrack.EntryHandle
2019-03-29 08:48:56 +11:00
Matt Joiner
5829c30146
Make use of the new context parameter in conntrack Wait
2019-03-11 10:46:06 +11:00
Matt Joiner
ee5a941203
Switch entirely to anacrolix/log
2019-01-15 18:18:30 +00:00
Matt Joiner
cc531b8c4a
Improve bootstrap result log message
2018-11-29 18:33:33 +11:00
Matt Joiner
d9fe3f50d3
Discount dial errors that won't affect connection tracking
...
This will reduce pressure on the conntrack instance.
2018-11-28 10:32:08 +11:00
Matt Joiner
d9e1ebde70
Improve network handling and only listen networks we will use
...
Fixes #290 .
2018-11-28 10:30:21 +11:00
Matt Joiner
70f63b2991
Remove unused type
2018-11-28 10:26:13 +11:00
Matt Joiner
3ba991e38a
Remove unused code
2018-11-27 23:57:17 +11:00
Matt Joiner
33006eeb20
Use new conntrack priorities
...
Fixes #295
2018-11-27 23:22:24 +11:00
Matt Joiner
40d7a709ee
Log initial DHT bootstrap results
2018-11-21 17:05:56 +11:00
Matt Joiner
f4e30656d6
Add initial connection tracking
2018-11-21 17:02:22 +11:00
Matt Joiner
1dc406c81c
Move IpPort to missinggo
2018-11-16 10:35:30 +11:00
Matt Joiner
0032b45a02
Store remoteAddr with each connection
...
It would appear net.Conns returned from proxies don't have a RemoteAddr the client expects.
2018-11-04 21:15:51 +11:00
Matt Joiner
1a4950ad4a
Add default DHT servers when UTP disabled
...
Also ensures that UDP and TCP sockets are reserved, even if not used, and fixes tests. Fixes #289 .
2018-11-04 17:43:47 +11:00
Matt Joiner
9a49f4b37e
Add establish outgoing connection expvar
2018-11-04 16:12:16 +11:00
Matt Joiner
c50e59166d
Add dial rate limiting
...
Fixes #273 .
2018-11-02 23:09:52 +11:00
Denis Kuzmenok
9dc89ab6dc
reverting usage of proxy for http requests
2018-10-31 10:54:10 +11:00
Matt Joiner
a8787e6632
Revert "Make requestStrategy 3 the default"
...
This reverts commit 60dd0eed53
.
2018-08-25 16:43:28 +10:00
Matt Joiner
81e6061a53
When Accept gives an error, don't use the Conn
2018-07-27 10:18:56 +10:00
Matt Joiner
2f14e5dbc0
Track received handshake encryption activity
2018-07-25 17:11:56 +10:00
Matt Joiner
2940f27f9f
Use the new firewall callback support in go-libutp
2018-07-25 17:11:09 +10:00
Matt Joiner
6dd3b9c12c
Law of Demeter Client.mu
2018-07-25 13:42:28 +10:00
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