Commit Graph

7496 Commits

Author SHA1 Message Date
arvidn 95fe4ba3e2 improve portmap logging 2020-03-19 16:12:11 -07:00
arvidn 61a923e9b8 make UPnP port-mapping lease duration configurable, and default to 1 hour leases 2020-03-19 16:12:11 -07:00
arvidn 0d06d47a29 add build option to disable predictive pieces feature 2020-03-17 17:43:31 -07:00
arvidn 903ead89b1 various clang-tidy fixes 2020-03-17 16:22:02 -07:00
arvidn ce9be0c83f deprecate bittyrant choking algorithm 2020-03-15 12:24:36 -07:00
arvidn 827d852c58 add option to disable streaming functionality 2020-03-14 18:26:42 -07:00
arvidn 0f337b9ce7 bump version to 1.2.5 2020-03-08 04:34:21 -07:00
arvidn eaa18ff7a1 announce port=1 instead of port=0, when there is no listen port 2020-03-07 17:11:03 -08:00
arvidn 9469913cb2 fix typo in lsd::start 2020-03-07 08:21:30 -08:00
Arvid Norberg 6480b9df8c minor tweak to set_queue_position to ensure trigger_auto_managed() is always called 2020-03-07 07:08:02 -08:00
Arvid Norberg 9bfb108b4f enable all disabled trackers when listen sockets are re-opened 2020-03-07 07:07:32 -08:00
arvidn 06ce1b4747 fix issue where want_tick could get out of sync with the lists the torrent belonged to 2020-03-04 21:06:57 +01:00
arvidn 65d6e83b1a add support for TCP_NOTSENT_LOWAT 2020-03-04 13:16:54 +01:00
Arvid Norberg 83bbefc008 fix correct interface binding of local service discovery multicast 2020-03-04 06:06:19 +01:00
arvidn 14d5c99a18 expanding a device does not look for a default route 2020-03-03 11:43:52 +01:00
arvidn 1e4083b3fb rely less on the ability to enumerate the routing table reliably. Any IP address
explicitly specified is assumed to represent an externally available IP, unless
marked with the l-flag. If a device name or an unspecified address is used, they
are expanded and only for such expanded entries is there a heuristic to
determine which addresses are externally available and which are local. The
default is to assume it's local only, unless it has a globally routable IP
address or a default route can be found for the device.
2020-03-03 11:43:52 +01:00
FranciscoPombal 0eee042bf9 Fix some more unlikely integer truncation 2020-02-28 09:10:44 +01:00
arvidn 1dcbeb2e60 remove some seemingly unnecessary TORRENT_TRY and TORRENT_CATCH from is_local(), is_any() and is_teredo(). simplify is_loopback() 2020-02-26 17:52:29 +01:00
arvidn cc792d8638 improve error messages and error reporting of failing enum_routes() 2020-02-26 17:48:12 +01:00
arvidn c299004abf undeprecate settings_pack::dht_upload_rate_limit. Make sure it doesn't overflow if set too high 2020-02-20 09:25:15 +01:00
arvidn 14f1266199 fix strncpy() warnings and ensure C strings are 0-terminated 2020-02-18 20:36:01 +01:00
arvidn 224cc0ec6d include tiny version in DHT v field 2020-02-18 20:35:04 +01:00
arvidn ad83b1c0eb fix one more float->int conversion warning 2020-02-09 02:12:56 +01:00
arvidn 0a4a06ce74 apparently on VPNs it's common for the gateway for a route to be outside of the netmask of the network it's a router for. fix that in get_gateway 2020-02-08 23:03:10 +01:00
arvidn 6d5bdbdb1a fix recent clang warnings 2020-02-08 13:58:04 +01:00
arvidn 3092b7ca44 fix binding TCP and UDP sockets to the same port, when specifying port 0 2020-02-07 01:27:09 +01:00
arvidn b4cda2989e fix announcing port=0 when configured with no listen interfaces 2020-02-06 22:21:42 +01:00
arvidn d607328b45 fix announce_to_all_trackers and announce_to_all_tiers behavior 2020-02-05 11:19:15 +01:00
arvidn 86183358e9 bump version to 1.2.4 2020-02-05 01:55:44 +01:00
arvidn f099f356c6 improve tracker debug logging 2020-02-03 03:15:53 +01:00
arvidn bdee0b563c fix suggest_read_cache setting 2020-02-02 20:16:59 +01:00
arvidn 94d90ce96f back-off tracker hostname looksups resulting in NXDOMAIN 2020-02-01 20:28:13 +01:00
arvidn acbd1c3d4c fix issue where if the last requested blocks are rejected, we may not have been requesting any new blocks 2020-02-01 11:47:17 +01:00
arvidn bc6444a251 lower TCP keepalive timeout for SOCKS5 UDP tunnel, to detect network failures and retry 2020-02-01 11:43:51 +01:00
Steven Siloti cc8cbcaf9d fix infinite loop when announcing
In torrent::announce_with_tracker there is a check after announcing all of
a tracker's endpoints to see if all required announces have already been sent
according to the tier settings.

	if (std::all_of(listen_socket_states.begin(), listen_socket_states.end()
		, [](announce_state const& s) { return s.done; }))
		break;

Commit ab07eceead added a check which can cause listen_socket_states to not be
populated if all endpoints for the first tracker are disabled. This causes the
early break out code above to trigger and prevent any announces from being sent.

The extra check is not in torrent::update_tracker_timer though, so if it thinks there
is at least one endpoint ready to announce it will immediately trigger another
on_tracker_announce, again, and again.

Simple fix is to move the offending check below the code which populates
listen_socket_states so the the latter will execute unconditionally.
2020-01-26 11:39:33 +01:00
Vladimir Golovnev (glassez) 4054cbbaee store stop_when_ready flag in fastresume data 2020-01-23 17:13:57 +01:00
arvidn 208d71ba77 support source-hint from routing table, where supported 2020-01-22 15:50:33 +01:00
arvidn bc0274ed6a limit the number of DHT nodes to run 2020-01-21 12:04:22 +01:00
arvidn 2c8cf4834b simplify the local service discovery logic to only deal with a single network. Instantiate LSD once per listen_socket_t instead of just once 2020-01-20 22:14:21 +01:00
Alden Torres 819eea722b backport of warning related fixes 2020-01-20 14:29:31 +01:00
arvidn f94c09c95d use our local address correctly for user port-mapping requests 2020-01-20 14:27:16 +01:00
arvidn 7529d3e67e remove now unused, in_local_network() functions 2020-01-20 14:27:16 +01:00
arvidn b5ea5bb82c move upnp mapper to have one per listen_socket_t. simplify the upnp logic to only deal with a single network. 2020-01-20 14:27:16 +01:00
arvidn b8726bd4f6 refactor discover_device() away from upnp 2020-01-20 14:27:16 +01:00
arvidn a40ae61f15 improve SOCKS5 error alerts by including the interface address in no-route-to-host errors 2020-01-20 01:24:55 +01:00
arvidn f5ebd4e354 simplify natpmp by requiring it to be tied to a specific network, and use get_gateway() and remove unused get_default_route() functions 2020-01-20 01:24:22 +01:00
arvidn a53d3a8746 factor out get_gateway function and add unit tests. IPv6 gateways are not addressed in the same network, so we can't use match_addr_mask(). Assume all local IPv6 addresses do not have a gateway 2020-01-19 08:27:33 +01:00
arvidn 571952fd19 bind SOCKS5 connection to correct outgoing interface 2020-01-19 08:27:33 +01:00
arvidn 95df88e7a3 make it a build error if we don't know how to enumerate network interfaces or network routes 2020-01-19 08:27:33 +01:00
arvidn a1d78aa60e only start natpmp on listen sockets that have a router (since NATPMP needs one) 2020-01-19 08:27:33 +01:00
arvidn 88d9c05e3c expand IPv4 in expand_unspecified_address 2020-01-19 08:27:33 +01:00
arvidn 0961427b50 expand unspecified to loopback as well 2020-01-19 08:27:33 +01:00
arvidn 8be7ab559a remove outgoing udp sockets and replace with listen_socket_t 2020-01-19 08:27:33 +01:00
arvidn 4ceb2ea467 limit tracker announces and SOCKS5 connection attempts to listen_socket_t that actually can reach the target 2020-01-19 08:27:33 +01:00
arvidn a0b0f2aec5 fix clearing of netmask if it's not known, on windows 2020-01-18 13:29:54 +01:00
arvidn d13109426a fix test_lsd to pass reliably 2020-01-18 03:20:20 +01:00
Steven Siloti e4e967335c populate ip_interface.netmask on Windows 2020-01-17 00:33:45 +01:00
arvidn 82d4d1927d restrict DHT nodes to the network they are associated with (multi-homed) 2020-01-17 00:01:10 +01:00
arvidn df85b31490 deprecate and remvoe broadcast_lsd setting 2020-01-16 16:02:00 +01:00
arvidn fa79697f45 deprecate (and remove) upnp_ignore_nonrouters setting 2020-01-16 10:35:50 +01:00
arvidn bd43c9b83f remove unused overload of set_external_address 2020-01-15 19:53:52 +01:00
arvidn 659a78eb56 improve test_upnp by responding with a unicast message 2020-01-15 08:03:33 +01:00
arvidn 549db2beb9 fix comment 2020-01-14 14:20:19 +01:00
arvidn ab07eceead don't attempt sending event=stopped if event=start never succeeded 2020-01-12 14:12:23 +01:00
arvidn e18366bb6b make sure &key= stays consistent between different source IPs (as mandated by BEP7) 2020-01-11 11:37:54 +01:00
arvidn 7320568c3c minor cleanup of debug logging for peer_list 2020-01-11 11:22:30 +01:00
arvidn 7754f8ef1b improve logic for disable tracker-endpoint, and add debug logging 2020-01-10 16:28:15 +01:00
arvidn 96ad81f00d fix minor typo in torrent debug logging 2020-01-10 13:16:21 +01:00
arvidn 37063afd5c improve enum_routes and enum_net_interfaces for simulator 2020-01-08 11:05:14 +01:00
arvidn 2e15b3edfa use span in expand_unspecified_address 2020-01-08 10:24:54 +01:00
arvidn f508a433a4 fix binding of outgoing interface, when configured 2020-01-08 10:21:41 +01:00
arvidn 96695fa714 fix build_netmask to treat the count as a prefix and add tests 2020-01-06 20:23:13 +01:00
arvidn af3d084092 convert the duplex enum into a flags field, on listen_socket_t and listen_endpoint 2020-01-06 20:22:55 +01:00
arvidn 3569b8885e fix null termination of description and friendly_name in ip_interface on linux 2020-01-05 18:38:04 +01:00
Arvid Norberg 3caae922aa simplify and clean up enum_routes() a bit 2020-01-05 09:42:32 +01:00
Pavel Pimenov c7c7cd41d2 remove m_inode 2020-01-04 23:03:46 +01:00
arvidn 55e83e40d2 suppress future attempts to announce to a tracker from an interface with an incompatible address family 2020-01-04 23:03:17 +01:00
Arvid Norberg 0675bd263f add new socks5_alert to trouble shoot SOCKS5 proxies 2019-12-28 17:57:44 +01:00
Pavel Pimenov b5bf6c3260 fix http_stream::handshake2 2019-12-20 22:10:17 +01:00
arvidn 8378c0f55c silence GCC warning on memmove 2019-12-17 09:28:23 +01:00
arvidn 68196dceae fix erroneous event=completed tracker announce when checking files 2019-12-15 11:21:46 +01:00
arvidn 69d85ed110 replace use of deprecated shared_ptr<>::unique with shared_ptr<>::use_count 2019-12-12 19:40:39 +01:00
arvidn 828ad7d024 bump version 1.2.3.0 2019-12-09 12:46:36 +01:00
arvidn 59a29a44e2 promote errors in parsing listen_interfaces to post listen_failed_alert 2019-12-09 06:54:31 +01:00
arvidn 26ec7921c3 fix bug in protocol encryption/obfuscation 2019-12-07 11:44:05 +01:00
arvidn f49d194186 fix buffer overflow in SOCKS5 UDP logic 2019-12-06 09:19:17 +01:00
arvidn b5790b982b fix issue of rapid calls to file_priority() clobbering each other 2019-12-04 22:04:13 +01:00
arvidn b5e717ffe0 back-port ut_pex fixes 2019-12-03 18:49:34 +01:00
arvidn b329d579e9 clear tracker errors on success 2019-12-02 23:36:18 +01:00
arvidn 11014b7efc update list of clients to be more.. modern. Hide alert constructors 2019-12-02 23:24:59 +01:00
arvidn a81bf1f1d7 make the buffers to print SOAP messages into a bit smaller, to silence a GCC warning 2019-11-29 12:57:43 +01:00
arvidn 0c2d3a0dac optimize setting with unlimited unchoke slots 2019-11-26 20:54:52 +01:00
arvidn 97a79d2dba fixed restoring of trackers, comment, creation date and created-by in resume data 2019-11-25 14:21:55 +01:00
arvidn a53d090313 fix handling of torrents with too large pieces 2019-11-25 02:46:55 +01:00
arvidn 3019b17c90 use a better algorithm for sorting peers in the unchoker 2019-11-21 08:39:32 +01:00
arvidn 2bb7d92957 construct io_context with the hints that it's single-threaded 2019-11-21 08:34:28 +01:00
Arvid Norberg 76f53297a9 update appveyor image and boost version. explicitly use python2 for test scripts (as the SSL behavior has changed in python 3 in non-trivial ways) 2019-11-19 01:46:39 +01:00
arvidn 6d441da9e5 fix warning comparing integers of different width 2019-11-14 11:55:14 +01:00
arvidn 592544f30f fix some PVS studio warnings 2019-11-07 16:38:08 +00:00
Steven Siloti b26629885b fix storing udp port mappings in listen_socket_t 2019-10-23 15:50:37 +02:00