Commit Graph

7496 Commits

Author SHA1 Message Date
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
arvidn 729102c280 fixed division by zero in anti-leech choker 2019-10-20 12:59:55 +02:00
arvidn 39e2e4d3dc fix torrent_info::swap 2019-10-18 13:38:39 +02:00
arvidn 4b8f8d7e92 honor proper object lifetime rules 2019-09-28 22:11:54 +02:00
arvidn d08fa164d2 fix issue where pieces would be hashed despite disable_hash_checks was set 2019-09-13 22:38:18 +02:00
arvidn 961417814b WIP: fix to be less likely to hammer web seeds 2019-09-12 16:57:07 +02:00
arvidn 7a27a0430b improve peer logging a bit more. specifically around merging requests, sending merged requests and connecting web seeds 2019-09-10 12:23:36 +02:00
arvidn 77be259938 improve peer logging 2019-09-08 19:02:09 +02:00
arvidn 7878f68370 add some missing documentation. undeprecate error_file_metadata ahead of master undeprecating it 2019-09-08 10:51:46 +02:00
arvidn 9b1607a63c fix updating of is_finished torrent status, when changing piece priorities 2019-09-07 10:45:25 +02:00
arvidn a3440e54bb make aux::session_settings thread-safe. this allows all threads to share the same settings object, which has low contention and is rarely updated 2019-09-01 03:41:36 +02:00
arvidn c0c4c2083a avoid comparing unrelated pointer in the DHT routing table (which is UB) 2019-08-31 12:54:00 +02:00
arvidn d5b56ca187 capture return value from placement new, to explicitly make the pointer point to the new object 2019-08-28 23:58:25 +02:00
arvidn baeb959054 bump version to 1.2.2 2019-08-23 13:39:22 +02:00
arvidn e8543ecf54 remove empty statements and fix integral promotion warning 2019-08-20 14:36:03 +02:00
arvidn af5fe587c0 fix regression in left= reporting to trackers when adding a seeding torrent 2019-08-19 13:49:25 +02:00
arvidn b97ac317f6 improved peer_conn fuzzer 2019-08-17 22:16:38 +02:00
arvidn 07ab3b9739 add feature to create an affinity to pick adjecent pieces aligned to 4MiB extents. It's an attempt to improve disk I/O, by writing larger contiguous ranges of bytes. It's off by default. 2019-08-17 12:32:47 +02:00
arvidn ffd4b39b09 improve hack in file_storage::symlink 2019-08-13 21:30:23 +02:00
Arvid Norberg ff113a262c make it a bit more likely to split the last bucket in the DHT routing table 2019-08-12 15:08:49 -07:00
Arvid Norberg bfe0e1f27d hide some internal functions. error if namespaces are preceded by whitespace (as the docs generation script requires them to start at the beginning of the line) 2019-08-07 20:48:26 -07:00
Andrei Kurushin d4ddc416b3 backport RC_1_2: unban 51.x.x.x from dht darknet list 2019-08-02 08:01:34 -07:00
Arvid Norberg e539846266 fix integer overflow in chunked http parser 2019-07-30 11:16:05 -07:00
arvidn b1b03a0d77 factor out and unit test parts of the DHT routing table logic that handles the affinity of nodes to insert. Specifically, make sure the even distribution within routing table buckets works correctly 2019-07-30 07:56:18 -07:00
arvidn c9f953f487 saturate failed-bytes and redundant-bytes counters in torrent object, rather than asserting on overflow. This happens in the fuzzer, which keeps a torrent open for the entire run, causing it to max out redundant bytes 2019-07-29 21:53:16 -07:00
arvidn 8e23f9cc92 improve file_storage::sanitize_symlinks 2019-07-29 06:10:04 -07:00
arvidn 3995ffeafd similar to how low RTT DHT nodes are preferred over high RTT nodes, also have an affinity for nodes with node IDs derived from their IP 2019-07-28 16:13:16 -07:00
arvidn ca27892111 avoid empty dht routing table buckets 2019-07-27 07:18:24 -07:00
arvidn 929f727a6a fix dht_stats_alert routing table stats for multi-homed clients (temporary hack for 1.2.x series) 2019-07-27 07:18:24 -07:00
arvidn 71c980957c fix entry assignment from bdecode_node and lazy_entry 2019-07-21 06:22:11 -07:00
arvidn 057c6684f2 fix use-after-free issue in socket_type 2019-07-21 05:40:18 -07:00
arvidn 178093f81b fix error code messages when building without deprecated functions 2019-07-21 05:39:53 -07:00
Arvid Norberg 196588c7b8 add torrent_info constructor overloads to control torrent file limits 2019-07-20 18:14:19 -07:00
arvidn 7a20850632 feature to disable DHT, PEX and LSD per torrent 2019-07-20 10:20:41 -07:00
Amir Abrams 7d00e80a7a Trivial, correct school spelling in comments 2019-07-14 11:42:07 -04:00
Amir Abrams 8420f01eb4 Correct log verbiage for put_item 2019-07-14 11:42:07 -04:00
arvidn bcb26fd638 fix seeding of random number generator on mingw 2019-07-04 19:56:18 +02:00
Arvid Norberg d113816ae6 fix issue where trackers from magnet links were not included in create_torrent() 2019-07-04 12:53:36 +02:00
arvidn 9da041a24d extend the whole_pieces_threshold setting to also request contiguous pieces from fast peers 2019-07-02 10:32:27 +02:00
Arvid Norberg 6fbeb93d50 fix error handling of moving storage to a drive letter that isn't mounted 2019-07-01 15:27:37 +02:00
patch3proxyheaders915360 832857e384 set HTTP Host to request-target when using proxy
To make the Host field carry the request-target it is enough to set
the Host information before changing the connection destination.

Many proxies rely on the Host field-value to route requests
in a violation of RFC7230 section 5.4.

https://tools.ietf.org/html/rfc7230#section-5.4

A request with the Host field set to the proxy hostname and port
in place of the request-target produces error responses and otherwise
confuses such misconfigured middleboxes.
2019-07-01 10:17:20 +02:00
Monson Shao 186371f1a2 choke dishonest peer in anti-leech seeding algorithm (#3833)
support peers not sending redundant HAVE messages in anti-leech seeding algorithm
2019-06-10 08:53:16 +02:00
arvidn f9d31cf71b fix GCC-9 warnings 2019-06-02 20:58:58 +02:00
Arvid Norberg 16acd9ebe1 don't leak exceptions out of handler callbacks in resolver 2019-05-19 08:00:50 +02:00
arvidn 7d1afa9b41 fix assert in DHT node 2019-04-30 12:50:05 +02:00
arvidn d97e1be6b2 bump version of RC_1_2 to 1.2.1 2019-04-28 03:31:04 +02:00
arvidn b21eebbad7 minor simplification of power-of-2 test in create_torrent 2019-04-27 17:17:56 +02:00
arvidn ce52d9c685 remove left-over, rendant, encoding of the info-dict in create_torrent::generate() 2019-04-26 22:02:23 +02:00
arvidn ba731ef0cf make sure session cleanup releases all its references to torrents 2019-04-22 22:31:51 +02:00
Steven Siloti aec5c50282 Track the mapped port for each NAT mapping transport (#3793)
* Track the mapped port for each NAT mapping transport
Each transport needs to be tracked separately so that a failed mapping request
doesn't cause the listen port for a socket to be cleared to zero.
* add template specialization to allow enums as indexes
* use aux::array for port mappings
2019-04-22 01:50:44 +02:00
Steven Siloti 27a49523a3 fix windows build with boost 1.70 2019-04-21 00:47:44 +02:00
Arvid Norberg 76c2794923
fix build with boost-1.70 (#3788)
fix build with boost 1.70.0 Fix #3683
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2019-04-19 20:56:19 +02:00
arvidn 8506f93507 fix more warnings 2019-04-11 18:18:11 +02:00
arvidn a845afe6d9 fix warnings 2019-04-10 08:05:36 +02:00
arvidn 4441655bab optimize resolve_duplicate_filenames_slow() 2019-04-09 01:59:34 +02:00
arvidn 5b021a849e use a more restrictive limit on number of pieces allowed in a torrent 2019-04-02 19:44:00 +02:00
arvidn f025c67185 fix memory leaks in test_http_connection simulation 2019-03-30 14:44:21 +01:00
arvidn 3a093c5d27 improve disk I/O logging 2019-03-28 12:00:32 +01:00
arvidn 102387f4a8 make all tests run cleanly with leak sanitizer 2019-03-27 17:10:36 +01:00
Steven Siloti 4dc2e6015d use flag to prevent multiple calls to abort_jobs even when asserts are disabled 2019-03-26 18:04:18 +01:00
Steven Siloti 8d9c746149 always flush disk I/O job queue before shutdown
Leaving jobs on the queue can lead to memory leaks
2019-03-26 18:04:18 +01:00
arvidn bb5c612180 fix typo in validation of reject messages. Make on_choke a bit more defensive 2019-03-26 09:14:16 +01:00
Arvid Norberg 3a4a7b742a deduplicate code implementing log2p1() 2019-03-23 22:44:32 +01:00
arvidn 20cb26fcc1 remove duplicate copy of escape_string 2019-03-23 20:30:40 +01:00
Arvid Norberg 19dbfce9c0 simplify and clean up the handling of name in internal_file_entry. move should be more efficient now, by not copying the name 2019-03-22 21:31:32 +01:00
arvidn 2990532d10 reduce the amount of hacky path/string handling code 2019-03-22 07:48:07 +01:00
arvidn b6896cf337 tighten up validation of dont-have messages 2019-03-21 16:48:08 +01:00
arvidn 972288340f tighten up validation of reject messages, to ensure consistency of stats counters 2019-03-20 18:57:41 +01:00
arvidn 01feb32821 tighten up message size checks 2019-03-20 12:59:13 +01:00
arvidn e5de81a6cb remove unused replace_extension() 2019-03-19 17:26:19 +01:00
Arvid Norberg 57cd2882d4 update symlinks to conform to BEP 47 2019-03-19 10:05:06 +01:00
arvidn 5f85e40193 remove old, hacky and unused split_string() function 2019-03-19 09:27:06 +01:00
Arvid Norberg 28d5b7d427 remove unused flags parameter to send_buffer() and send_message() on peer_connections 2019-03-19 01:09:34 +01:00
arvidn bb10385e6c fix asserts in old merkle code 2019-03-17 18:58:26 +01:00
Alden Torres 620eb39f2c missing changes 2019-03-11 14:38:26 +01:00
Alden Torres 1fe763483e minor lint oriented refactor, moved a couple of functions to aux 2019-03-11 14:38:26 +01:00
arvidn 381d5a3c5d add support for creating symlinks, for torrents with symlinks in them 2019-03-05 22:53:56 +01:00
Arvid Norberg 57e56d5070 factor out logic around adding torrents to the session into insert_torrent() 2019-03-03 12:56:24 +01:00
Arvid Norberg e106602f49 allow padfiles of equal size to share the same filename 2019-03-01 16:09:53 +01:00
Arvid Norberg 57017e3ace noreturn attribute is standard in C++11 2019-02-27 17:11:15 +01:00
arvidn 9bd5f424d3 use standard __func__ identifier instead of extensions 2019-02-26 23:59:43 +01:00
Amir Abrams 97c23366f3 Remove duplicate word in comments like "the the" 2019-02-24 12:28:17 +01:00
arvidn 4473a8d0ce fix seed_mode flag 2019-02-24 10:20:20 +01:00
arvidn 3891f77253 fix naming in test_dht. don't include deprecated header (lazy_entry) unless required 2019-02-21 23:05:42 +01:00
arvidn 7f2a78d0c9 make random_shuffle() take a range instead of two iterators. use random_bytes() instead of std::generate() and random_byte(). Remove unused hasher.hpp includes 2019-02-19 01:48:08 +01:00
arvidn 1b7884b220 support numeric suffixes to magnet link parameter names 2019-02-15 23:15:38 +01:00
arvidn aa7f29c17a fix exporting of from_span type-tag 2019-02-13 00:15:41 +01:00
arvidn 748bb81570 include sha1.cpp in the build unconditionally, match build configuration options to using built-in sha1 and defining it 2019-02-13 00:14:53 +01:00
arvidn 9e376cae9f fix warning in gcrypt usage 2019-02-12 21:01:21 +01:00
gubatron 69cff71cb6 Added FrostWire's client ID
As accepted in last amendment of bep_0020.rst on github.com/bittorrent/bittorrent.org
See: 7cb4ec93ea
2019-02-12 13:27:43 +01:00
arvidn a2196a4194 fix warning in session_impl 2019-02-12 00:58:40 +01:00
Steven Siloti d33b0506a0 don't try to hash empty read in do_uncached_hash 2019-02-11 10:38:28 +01:00
arvidn 8fc69f5d2e don't copy a vector into the async_write operation for iovec. Since the chained_buffer will own the vector anyway, just make it return a span and copy that 2019-02-09 17:45:47 +01:00
Arvid Norberg 3ce277ba7f merged RC_1_1 into RC_1_2 2019-01-23 00:11:59 +01:00
Arvid Norberg 71f275d92b replace use of (deprecated) boost.endian with boost.prefef 2019-01-22 00:50:47 +01:00
Arvid Norberg 77bd5c9c7e remove some c++98 fallback code 2019-01-20 18:28:51 +01:00
Alden Torres f23daa8262 marked final error category classes, avoid -Wnon-virtual-dtor 2019-01-20 00:38:25 +01:00
Alden Torres bcda184e59 [WIP] refactor in file_progress to avoid dependency of alert_manager 2019-01-13 02:40:15 +01:00
arvidn f4f1425115 use UNC paths pervasively on windows 2019-01-12 21:00:40 +01:00
arvidn 8b067310b1 merged RC_1_1 into master 2019-01-12 00:53:45 +01:00
arvidn b443d33430 bump version number 2019-01-11 11:30:37 +01:00