Commit Graph

738 Commits

Author SHA1 Message Date
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
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