Commit Graph

7321 Commits

Author SHA1 Message Date
Alden Torres 421709f67f added friendly_name and description to ip_interface (#2799) 2018-02-19 11:46:35 +01:00
arvidn 1ede34da8a undo the patch to restore incoming TCP connections over SOCKS5 2018-02-19 00:01:42 +01:00
arvidn f8fb5c2294 merged RC_1_1 into master 2018-02-10 22:52:12 +01:00
arvidn a1860426b8 defer truncating existing files until the first time we write to them 2018-02-10 18:33:41 +01:00
arvidn 77181c1469 fix issue when receiving a torrent with 0-sized padfiles as magnet link 2018-02-09 17:41:30 +01:00
Alden Torres d2e874fca8 headers code cleanup, removed unused fields in torrent class (#2775) 2018-02-06 08:32:19 +01:00
arvidn 15a8a17a6f merged RC_1_1 into master 2018-02-05 08:55:15 +01:00
arvidn a0a63341c7 fix haiku build 2018-02-04 19:10:43 +01:00
Alden Torres 3261eea63a more use of emplace and minor code refactor in bt_peer_connection.cpp 2018-02-02 21:53:48 +01:00
Alden Torres fe9883ea27 avoid endianness test in peer_priority function 2018-01-31 22:49:25 +01:00
arvidn 91e03c789c fix issue resuming 1.0.x downloads with a file priority 0 2018-01-31 22:43:07 +01:00
Alden Torres 5d230a69f2 minor code cleanup 2018-01-30 12:38:08 +01:00
arvidn 01c41fadcf fix torrent_status::next_announce 2018-01-29 15:08:18 +01:00
arvidn 50a293730b merged RC_1_1 into master 2018-01-29 10:20:45 +01:00
arvidn e126d7bce0 move socket_type into aux-namespace 2018-01-29 08:33:45 +01:00
arvidn 9ac394f5b0 turn piece picker option flags into a proper type 2018-01-29 03:01:17 +01:00
arvidn a33c81ad33 shave down session_interface by one function, reduce the dependencies between torrent and session 2018-01-29 03:00:59 +01:00
arvidn ca3ea591df fix pad-file scalability issue 2018-01-29 03:00:37 +01:00
arvidn 720bfa54cd merged RC_1_1 into master 2018-01-29 01:20:08 +01:00
arvidn b729021625 make coalesce-buffers work on windows and systemps with pwritev()/preadv() 2018-01-28 23:05:01 +01:00
arvidn a50579c651 merged RC_1_1 into master 2018-01-27 09:41:54 +01:00
Alden Torres 084e980d52 avoid repeated calls to .address(), minor refactor 2018-01-27 09:22:38 +01:00
d-komarov fa03cbea9b Revise torrent state update
* Remove unused m_in_state_updates
* Update m_state_subscription comments
2018-01-27 09:17:40 +01:00
arvidn 308cbfe097 merged RC_1_1 into master 2018-01-27 02:36:55 +01:00
arvidn bc4d53c71f restore support for incoming connections over SOCKS5 (disabled by default) 2018-01-25 09:14:14 +01:00
arvidn 4fef787212 merged RC_1_1 into master 2018-01-24 00:37:05 +01:00
arvidn efd096d879 use unique peer_ids per connection 2018-01-23 16:40:16 +01:00
arvidn 89c6f0b4a8 merged RC_1_1 into master 2018-01-21 15:51:22 +01:00
arvidn ed7ef8fdd6 minor cleanups in some extensions 2018-01-19 20:02:17 +01:00
arvidn 0ee6b7d142 build for iOS on travis 2018-01-18 22:37:37 +01:00
arvidn 785fffd976 make url_random take a span 2018-01-15 01:49:42 -05:00
arvidn a01274ce2c broadcast socket handler take a span 2018-01-14 20:21:42 -05:00
arvidn e829c1942a merged RC_1_1 into master 2018-01-14 13:07:20 +01:00
arvidn a67eb2f059 fix tracker connection bind issue for IPv6 trackers 2018-01-14 06:47:13 -05:00
arvidn a9085db760 fix error handling of merkle torrents 2018-01-13 17:33:36 -05:00
arvidn f29bb69612 fix error handling of unsupported hard-links 2018-01-13 08:36:48 -05:00
arvidn 65fef972a2 apply some c++11 modernization 2018-01-11 04:51:39 -05:00
pavel.pimenov 263e01f5da fix rp->blocks_left = blocks_in_piece; 2018-01-11 02:44:37 -05:00
Steven Siloti 5f25912694 remove unused infohash member in create_torrent 2018-01-11 02:43:09 -05:00
pavel.pimenov 5a772325a0 redundant is_finished(block.block) 2018-01-09 03:20:28 -05:00
pavel.pimenov 3f23ef59c6 small opt torrent::add_piece 2018-01-09 03:20:07 -05:00
arvidn a93429c5db modernize piece-size selection in torrent creator and add a test 2018-01-09 03:19:44 -05:00
arvidn ad82be145b merged RC_1_1 into master 2018-01-08 22:52:23 +01:00
Chocobo1 1877724c17 raise auto piece size selection limit to 16 MB in create_torrent()
16 MB is chosen to have a bit more future proof
Also rewrite the auto piece size selection algorithm, so that it will scale with
torrent content size, suggested by @ssiloti.
2018-01-08 15:24:47 -05:00
arvidn 3a9861e237 complete the error handling test and make it part of the default simulation test suite. It will run a file transfer between two clients repeatedly, each time cause another memory allocation fail, until every single memory allocation has failed once. Any invariant check failure, assertion or signal will cause the test to fail 2018-01-08 04:44:52 -05:00
Pavel Pimenov 97ceeab9e3 fix V821 Decreased performance. (#2675)
The 't' variable can be constructed in a lower level scope
2018-01-07 20:37:21 -05:00
pavel.pimenov 3e29968a92 remove duplicate if (files.num_files() == 0) 2018-01-07 14:00:59 -05:00
arvidn 39144201db mark up performance counter operations as noexcept 2018-01-06 20:12:41 -05:00
arvidn 88643dd121 fix m_in_constructor assert for peer_connection (if the peer connection is constructed, but bt_peer_connection constructor fails, it needs to be cleared). Fix an invariant in session on ungraceful shutdown. Make test framework a bit more robust 2018-01-06 14:29:20 -05:00
pavel.pimenov bad0f01e07 remove #include boost/multiprecision 2018-01-06 09:24:48 -05:00
arvidn fac9931eb6 fix noexcept marking on entry, and make move assignment 2018-01-04 19:34:42 -05:00
Alden Torres 98ade28237 using make_address instead of deprecated from_string when boost>=1.66 (#2659)
using make_address instead of deprecated from_string when boost>=1.66
2018-01-04 04:48:22 -05:00
arvidn 0731200149 block_size is a constant, no need in passing it around as a variable 2018-01-03 08:45:25 -05:00
arvidn c8bf782bd0 bump version number to 1.1.6 2017-12-29 15:53:51 +01:00
arvidn 6047e42c16 fix torrent invariant when creating the piece picker fails 2017-12-28 21:02:50 +01:00
arvidn 8b3624b25b remove_peer() and attach_peer() error handling 2017-12-28 14:26:19 +01:00
arvidn aae12250ae support forced shutdown/destruction of torrent objects 2017-12-28 14:11:55 +01:00
arvidn 5f0c9a0c1d improve error handling during session shutdown 2017-12-28 13:52:07 +01:00
arvidn c3bdc6f825 use an intrusive linked list for peer_cache_entry instead an unordered set, to avoid heap allocations and make cache operations not able to fail. This simplifies error handling 2017-12-28 00:52:09 +01:00
arvidn a9753d3bdc merge RC_1_1 into master 2017-12-27 22:16:14 +01:00
arvidn c1abafc0cc reserve space in the undead peers list up-front, to not have to allocate memory when disconnecting 2017-12-27 21:24:16 +01:00
arvidn 5ebd05b047 handle serious errors in on_accept_connection handler 2017-12-27 21:23:25 +01:00
arvidn 1884061418 revert redundant wrapping some function calls with error handlers. Error handling is already built into the handler allocator 2017-12-27 21:22:34 +01:00
arvidn 6ba64a1bb3 reserve space for m_peers_to_disconnect up front, in order to make queing up a peer for disconnection noexcept 2017-12-27 21:22:08 +01:00
arvidn ab9fcdf029 reserve space in torrent lists up-front, to make transitioning list membership unable to fail 2017-12-27 15:42:46 +01:00
arvidn 7ea5946305 remove some last lexical_cast residual 2017-12-27 12:44:36 +01:00
arvidn 347555ea8f handle errors in peer_connection 2017-12-26 10:39:54 +01:00
arvidn 3971897c14 remove invalid assert 2017-12-24 11:28:02 +01:00
arvidn 40292a1d51 don't heap-allocate handlers for incoming UDP packets 2017-12-24 11:22:30 +01:00
arvidn 753826cbb8 merger RC_1_1 into master 2017-12-23 18:15:01 +01:00
arvidn 43d7f980d0 make the chunk header parser properly fail at end of buffer, and not require zero terminated strings 2017-12-23 17:06:50 +01:00
arvidn b5d4bc5e62 back-port path fixup in file_storage add_file 2017-12-23 12:02:17 +01:00
arvidn 47709244d3 back-port fixed assert in chunk parser 2017-12-23 12:01:40 +01:00
arvidn 62bf524e75 disable DHT logging with the TORRENT_DISABLE_LOGGING macros as well 2017-12-23 12:01:18 +01:00
arvidn b7decd452e add getters for peer_class_filter and peer_class_type_filter 2017-12-23 09:25:06 +01:00
arvidn 67be35739c :attempt to fix disconnections when torrents enter upload mode due to failures 2017-12-23 09:24:26 +01:00
sledgehammer_999 94f4e88e05 Fix local network address mappings. 2017-12-20 11:28:36 +01:00
arvidn a54f76d5df deprecate status_code from tracker_error_alert (it's already part of the error_code), simplify code a bit 2017-12-19 00:55:51 +01:00
arvidn d45de18ba7 merged RC_1_1 into master 2017-12-18 23:01:33 +01:00
arvidn 178281e1c5 make torrent_handler::set_priority() to use peer_classes 2017-12-18 00:56:44 +01:00
arvidn 87de08cb3d improve type safety of plugin interface 2017-12-17 23:55:12 +01:00
arvidn bb945f5cf4 introduce a proper type for pex flags to improve type-safety 2017-12-17 23:17:12 +01:00
arvidn 0848d9b7f5 change defaults for rate_limit_utp setting 2017-12-17 08:50:25 +01:00
arvidn 96bf0ad5de fix reopening of listen sockets when disabling force-proxy 2017-12-17 08:25:51 +01:00
arvidn d52763805c back-port the tracker timeout test from master 2017-12-16 13:54:15 +01:00
arvidn 55babc57e6 merged RC_1_1 into master 2017-12-15 17:18:27 +01:00
arvidn d1a63cd781 fix build against boost-1.66, specifically the boost.asio changes 2017-12-15 11:29:53 +01:00
arvidn ba224a1577 restore the parse_magnet_uri overload that amends an add_torrent_params object 2017-12-14 12:20:02 +01:00
Steven Siloti 9e0a3aead1 use info hash from params instead of passing it separately 2017-12-14 10:18:33 +01:00
arvidn 7b06a5ee6e merged RC_1_1 into master 2017-12-13 12:36:35 +01:00
arvidn 86c83fe976 fix asio debugging 2017-12-12 10:11:09 -05:00
arvidn fe6473039c fix rate limit utp feature 2017-12-11 08:40:35 -05:00
arvidn b00b3184c0 some minor i2p cleanups 2017-12-08 09:57:21 +01:00
arvidn a286b9da47 fix i2p support 2017-12-08 09:57:21 +01:00
arvidn c4cf7ebae6 Merge branch 'master' of https://github.com/arvidn/libtorrent 2017-12-07 18:31:26 +01:00
arvidn 90ccd5180f merged RC_1_1 into master 2017-12-07 18:31:16 +01:00
Alden Torres db61d9cc20 minor cleanup, refactor and typos (#2593) 2017-12-07 07:51:55 +01:00
arvidn f81a20a035 fix loading resume data when in seed mode 2017-12-03 23:43:55 +01:00
arvidn 0fe2e85fee fix part-file creation race condition (back-port from master) 2017-12-03 18:13:54 +01:00
arvidn c16eb32b94 merge RC_1_1 into master 2017-12-03 18:12:35 +01:00
arvidn c745d3f00d fix incorrect use of make_tick_handler 2017-12-02 12:20:36 +01:00
arvidn 4b467f82ac fix issue with initializing settings on session construction 2017-12-02 12:20:36 +01:00
arvidn 5ce798197c merged RC_1_1 into master 2017-12-02 11:39:23 +01:00
Alden Torres 163d13e1d2 implemented support magnet URI extension, select specific file indices for download, BEP53 (#2578) 2017-12-01 12:40:19 +01:00
Alden Torres 28f096e94e added const to static arrays, minor refactor in alert.cpp 2017-12-01 09:57:00 +01:00
Alden Torres af6b54ed78 more use of const, auto loop, cleanup in escape_string.cpp 2017-11-30 18:12:21 +01:00
Alden Torres 7fe75dd1eb trivial code refactor in entry and string_util related code 2017-11-29 20:08:15 +01:00
arvidn a6656aeb93 generate random keys for use in tracker announces. keys are unique for each torrent and the listen interface they announce via 2017-11-29 00:10:35 +01:00
Alden Torres f2681412e7 more use of const in peer_connection.cpp and minor code refactor 2017-11-28 09:45:40 +01:00
Alden Torres e0dee20f3e more use of emplace_back in torrent_info.cpp and minor general refactor 2017-11-27 20:12:23 +01:00
Arvid Norberg e15f466137
fix issue with receiving interested before metadata (#2557) 2017-11-25 15:31:37 +01:00
Alden Torres ee1f4aa129 more use of auto, const and minor refactor in torrent.cpp (#2554) 2017-11-25 01:22:52 +01:00
arvidn 57ec82cb2e fix indentation in torrent.cpp 2017-11-24 22:15:30 +01:00
arvidn 4bc93cff38 merge RC_1_1 into master 2017-11-23 18:01:32 +01:00
arvidn 5e7666526e fix IPv6 tracker announce issue 2017-11-23 10:11:59 +01:00
Alden Torres f73473a6ec don't early move shared_ptr plugin in torrent::add_extension_fun, added test for it 2017-11-23 08:00:08 +01:00
Alden Torres 59fe15eb84 more use of emplace_back in torrent.cpp 2017-11-23 07:52:50 +01:00
arvidn d8ea7fc5eb merged RC_1_1 into master 2017-11-23 01:17:43 +01:00
arvidn 1593916e62 fix ipv6 udp tracker test 2017-11-23 00:05:08 +01:00
arvidn a57ad00e15 fix force-proxy regression (udp sockets would not be opened) 2017-11-21 08:54:16 +01:00
arvidn 04c2c35f8d restore path sanitization behavior of ':' 2017-11-21 08:50:09 +01:00
arvidn 22f8bdfebc merge RC_1_1 into master 2017-11-21 00:50:02 +01:00
Alden Torres c97bd53cde more use of const, emplace_back and minor code refactor 2017-11-20 23:45:41 +01:00
Arvid Norberg c734f42ac3
make tracker announces happen even if there are no open listen sockets (#2529)
support announcing to IPv6 trackers and running an IPv6 DHT when not listening for incoming connections
2017-11-20 23:42:22 +01:00
arvidn 30a7b52855 use a proper optional value instead of a sentiel value for bytes_left() 2017-11-19 21:25:06 +01:00
arvidn f262bbdcea use seconds32 as the retry-time for web seeds 2017-11-19 16:20:36 +01:00
arvidn 096ce54fae fix issue where new listen sockets would not be opened when leaving force_proxy mode 2017-11-14 12:38:22 +01:00
arvidn 2dc0204261 fix backwards compatibility in deprecated parse_magnet_uri 2017-11-13 15:38:08 +01:00
arvidn 521587c026 make sure the cork destructor doesn't leak exceptions 2017-11-12 23:03:54 +01:00
arvidn b6a73eeaaa simplify trigger_unchoke and trigger_optimistic_unchoke on session_impl, abd make them noexcept 2017-11-12 15:48:46 +01:00
arvidn 94dcd8e14b remove unused transaction id member of DHT observers 2017-11-12 15:46:33 +01:00
arvidn d00451994b stop posting alerts when the session is shutting down. Nobody will be able to see them anyway. It also solves some issues around destruction order where posting alerts require certain things to still be around in the session_impl object 2017-11-12 09:12:59 +01:00
Alden Torres c771f16c5c lint guided refactor in dht source code (#2516) 2017-11-12 00:50:24 +01:00
arvidn 1c278cc697 add API to query whether alerts have been dropped or not 2017-11-11 15:42:53 +01:00
arvidn 254f813626 factor out handler allocator and reuse it for posting deferred peer removals on torrents 2017-11-11 10:41:39 +01:00
arvidn b88c193742 fix sign conversion warning in peer_class_type_filter 2017-11-11 09:17:37 +01:00
arvidn d4864b8b18 some noexcept fixes 2017-11-10 09:05:15 +01:00
arvidn 1ed68551d7 merged RC_1_1 into master 2017-11-10 01:37:35 +01:00
Pavel Pimenov 8ac6bbe553 add http_parser::header_int (#2472) 2017-11-09 23:43:26 +01:00
pavel.pimenov 21eb9f782c opt call is_finished() 2017-11-09 20:52:48 +01:00
arvidn fc74c032f0 minor cleanup and modernization of torrent_peer 2017-11-09 15:48:27 +01:00
arvidn f41d2b5d3b move shared_ptr instead of copying them, when constructing DHT observers 2017-11-08 23:09:43 +01:00
Col-blimp b0c101a475 Update identify_client.cpp 2017-11-08 23:04:15 +01:00
arvidn 7730eea401 restore backwards compatibility with the API before download_priority_t was introduced 2017-11-06 01:24:24 +01:00
arvidn a690e6c76d add throwing overload of parse_magnet_uri 2017-11-05 20:31:06 +01:00
arvidn 6785046c2f introduce a download_priority_t type, for uniform an type-safe piece- and file priorities 2017-11-02 08:20:21 +01:00
arvidn f57b90b500 introduce type for torrent queue_position 2017-11-01 10:52:45 +01:00
Alden Torres 5480c08184 enable/disable the internal ip notifier with new setting (#2487) 2017-11-01 10:51:51 +01:00
Alden Torres f02e7514e1 fix issue of null m_part_file in default_storage readv/writev (#2490)
call need_partfile if necessary in default_storage constructor and no .reset() in release_files()
2017-10-31 16:49:58 +01:00
Roman Kalashnikov 7aa5570589 Remove twice assigned values 2017-10-30 19:13:56 +01:00
Alden Torres f040d6d860 added reopen_network_sockets method to allow manual reopen of listen/outgoing sockets (#2476) 2017-10-28 12:15:35 +02:00
Steven Siloti dc612b6423 keep updating aux::time_now() while there are announces
This fixes an infinite loop when an announce during shutown fails and
aux::time_now() has fallen behind clock_type::now() by more than the
delay calculated in announce_entry::failed(). If this happens,
announce_entry::can_announce() can forever return true when called from
torrent::announce_with_tracker() because that function uses
clock_type::now().

Also change torrent::announce_with_tracker() to use aux::time_now() just
for consistency with the reset of the announce related functions.
2017-10-26 23:42:35 +02:00
arvidn 50bef25786 make the piece-picker less two-phase initialized 2017-10-26 23:39:15 +02:00
Alden Torres ab4f140328 using NETLINK_NO_ENOBUFS to ignore ENOBUFS in netlink based ip notifier (#2475) 2017-10-26 11:15:19 +02:00
arvidn 80ac90727b remove some questionable code from disk_io_thread when deleting files for a torrent and extend transfer test to cover deleting files while seeding 2017-10-25 19:00:54 +02:00
arvidn 9e69bf3618 introduce a type to refer to a torrent-list-index, to improve type safety 2017-10-25 13:39:37 +02:00
Alden Torres b380bf8059 minor and general code cleanup/refactor 2017-10-25 09:58:47 +02:00
Alden Torres 174a2ca65f add limit of max 50 upnp mappings and recover free global mappings (#2470) 2017-10-24 16:16:22 +02:00
pavel.pimenov 989a65f18e upnp: reduce size NewPortMappingDescription 2017-10-24 12:27:46 +02:00
Alden Torres 1ce3483a9e creating part file if needed only in set_file_priorities 2017-10-24 09:56:49 +02:00
Alden Torres 7216b69188 revert early return in session_impl::on_port_mapping and only check for error if cast_vote (#2468) 2017-10-24 09:54:57 +02:00
Alden Torres 6409cb42e1 fix implicit-fallthrough warnings with gcc 7 2017-10-23 19:18:33 +02:00
Alden Torres bb409c5ee9 missing return if error in session_impl::on_port_mapping, doc typo (#2459) 2017-10-23 12:36:51 +02:00
arvidn 98effc8d88 minor disk_io_job piece_hash cleanup 2017-10-22 16:49:25 +02:00
Alden Torres 74ecf63906 close connection in upnp::on_upnp_xml and added abort/closing returns 2017-10-20 11:46:41 +02:00
arvidn 244d18dcf8 merged RC_1_1 into master 2017-10-17 09:38:51 +02:00
arvidn 205fe5e7ea fix full allocation failure on APFS 2017-10-16 00:08:10 +02:00
Alden Torres 8083a6c2bd some code indentation, one more use of nullptr and constexpr 2017-10-15 04:30:10 +02:00
arvidn a6c85496b5 make parse_magnet_uri return the add_torrent_params instead of of taking an in-out parameter 2017-10-15 04:29:53 +02:00
arvidn 516df740a3 make session_handle::get_torrent_status return the vector instead of taking an out-parameter 2017-10-14 23:35:35 +02:00
arvidn bb65acb082 make feature_flags proper type-safe 2017-10-14 23:33:48 +02:00
arvidn f0bac4cac7 merged RC_1_1 into master 2017-10-14 15:22:22 +02:00
arvidn 8adcfdbf41 make disk_buffer_holder know the size of the bufer it holds, to fix buffer overrun in chained_buffer
fix
2017-10-13 21:07:31 +02:00
Alden Torres 58a76e26a8 fix warnings from asio/ssl includes 2017-10-13 21:06:42 +02:00
arvidn 8af89da689 fix GCC-4.9 build 2017-10-13 10:08:51 +02:00
Steven Siloti 2b72a7321a send one last state update when a paused torrent's rates reach zero (#2436) 2017-10-11 23:10:40 +02:00
arvidn 85b6d98454 merged RC_1_1 into master 2017-10-11 11:19:02 +02:00
arvidn f19cca1374 fix infinite loop when parsing certain invalid magnet links 2017-10-11 09:11:58 +02:00
arvidn 9111d5977e make the variables holding the source of external IPs type-safe 2017-10-10 22:38:36 +02:00
Arvid Norberg 60b74d2616 merged RC_1_1 into master 2017-10-10 14:25:12 +02:00
arvidn a9524550d7 don't delete pieces from cache with refcount > 0 2017-10-09 17:48:08 +02:00
Arvid Norberg 830ef0bedd prevent dependency on openssl from leaking outside of libtorrent (libssl and libcrypto should not be a usage requirement). This cleans up most tests to build without having to also link against openssl 2017-10-09 17:15:35 +02:00
Steven Siloti 0c6b17ed82 don't try to connect to a global address with a local source address 2017-10-09 01:10:26 +02:00
arvidn 1d15e6bfb4 merge RC_1_1 into master 2017-10-08 18:21:25 +02:00
arvidn f080149081 fix parsing of torrents with certain invalid filenames 2017-10-08 15:54:08 +02:00
arvidn cdd9f91999 fix leak of torrent_peer objecs (entries in peer_list) 2017-10-07 11:43:42 +02:00
arvidn 4e1c5738a2 back-port openssl API compat patch from master 2017-10-07 01:10:41 +02:00
Alden Torres 7f3c38025f making use of openssl API 1.1 compatible 2017-10-06 11:03:16 +02:00
arvidn ed31664ee3 deduce the second argument to iconv() instead of requiring it to be configured via a macro 2017-10-06 10:52:09 +02:00
arvidn 69dc73914a merged RC_1_1 into master 2017-10-04 11:43:01 +02:00
Tim Niederhausen 7e748956e6 Provide a default ip_change_notifier implementation
Right now, compiling fails if there's no ip_change_notifier for the
current platform.
2017-10-04 08:56:55 +02:00
arvidn 99b19366a9 fix leak of peer_class objects (when setting per-torrent rate limits) 2017-10-03 17:32:49 +02:00
Alden Torres 27af8c398a more use of emplace_back and const in create_torrent.cpp 2017-10-03 10:53:04 +02:00
arvidn 5f3661aaa2 back port overflow checking from master 2017-10-02 00:02:14 +02:00
arvidn 2ea5115bcc fix the torrent_info size overflow check 2017-10-01 22:54:28 +02:00
arvidn 21fef88928 stricten up the filename sanitization a bit 2017-10-01 20:30:02 +02:00
arvidn c0d76a5304 fix regression in torrent size check 2017-10-01 16:44:58 +02:00
arvidn 3255375095 back-port file name sanitization patch to RC_1_1 2017-10-01 16:44:10 +02:00
arvidn 33b03e1f8e improve handling of case where a torrent file has no files in it 2017-10-01 10:53:43 +02:00
arvidn 5026659cb6 clean up and fix edge cases in update_path_index 2017-10-01 04:43:41 +02:00
arvidn 17d78d3b8f fix bounds checking in parsing of gzip header 2017-10-01 03:33:38 +02:00
arvidn 9d276ada8a fix issue with the name in single file torrents being sanitized away 2017-10-01 01:12:39 +02:00
arvidn 12e92aeeb4 make the chunk header parser a bit more strict and accurate (and not rely on there being a 0 termiator character) 2017-09-30 11:59:00 -07:00
Arvid Norberg 61733787f7 fix redundant assert in gzip header check 2017-09-29 23:51:45 -07:00
Arvid Norberg 86c37af147 fix integer overflow in torrent_info 2017-09-29 14:08:47 -07:00
pavel.pimenov f3796060d3 add const 2017-09-29 14:06:40 -07:00
arvidn 68f05d6380 fix some warnings and integer overflow with torrents that are too big 2017-09-28 14:59:28 -07:00
Andrei Kurushin c8d51689bb backport: fix windows file preallocation issue 2017-09-28 12:53:28 -07:00
arvidn c66f4cc62a fix some warnings, mostly 0 -> nullptr 2017-09-28 07:33:10 -07:00
Alden Torres 53ab7684fd minor code refactor and cleanup in port mapping code 2017-09-28 01:17:21 -07:00
Andrei Kurushin 6e396a85c2 fix windows file preallocation issue 2017-09-28 02:14:20 +03:00
Alden Torres 45fe6c0110 code refactor in torrent_handle::info_hash 2017-09-24 23:23:47 -07:00
Alden Torres a619dfb996 more use of auto, const and minor code refactor in torrent.cpp 2017-09-24 23:23:30 -07:00
arvidn 2cbf35489f fiw warning in ConvertUTF.cpp 2017-09-24 23:23:14 -07:00
arvidn edad33d270 fix const correctness in get_peer_class 2017-09-24 14:49:55 -07:00
arvidn 4c4c630fae merge RC_1_1 into master 2017-09-23 10:46:29 -07:00
arvidn d22c44c057 fix kludge and down-cast to send upload_only. Promote upload-only to a top-level peer feature 2017-09-23 07:51:51 -07:00
arvidn 5441874f10 fix integer overflow in whole_pieces_threshold logic 2017-09-23 06:59:13 -07:00
Alden Torres 1d9b10a32b fix warning for Xcode 9, added const and minor code refactor to bt_peer_connection.cpp 2017-09-22 04:46:16 -07:00
Steven Siloti 8648de3706 DHT nodes should only handle requests on their socket (#2355) 2017-09-21 21:00:38 -07:00
arvidn ddc8711dbe fix issue where peers could be disconnected while iterating over the peer list in the torrent. Specifically while marking peers as not-interesting 2017-09-21 07:26:13 -07:00
Alden Torres a8c020892a more use of auto, const and minor code refactor in ut_pex.cpp 2017-09-21 04:33:42 +02:00
Alden Torres 5c91301e6d more use of auto, const, size, minor code refactor and cleanup 2017-09-18 23:59:41 +02:00
arvidn 65d16142aa remove redundant null check 2017-09-18 00:51:26 +02:00
arvidn 9839507ecd simplify to_string to not apply unary - to an unsigned integer 2017-09-17 21:23:24 +02:00
arvidn 7717c02c2f run sonarqube with deprecated functions disabled. fix some of its code smells 2017-09-17 18:06:53 +02:00
arvidn 646581f8a2 use new instead of malloc 2017-09-17 17:13:57 +02:00
Steven Siloti 0232dc35cd deprecate lock_files (#2344)
File locking interacts poorly with the path to replace a read only file handle
with a read/write one. For performance reasons the old handle is not closed
until the new one is put in place. With file locking this obviously cannot
work because the first handle is holding a lock on the file. As a result,
file_pool::open_file fails in this case. Even if we dropped the reference to
the read only file handle before attempting to re-open it, the open could still
fail if another thread is holding a reference to the read only handle.

There doesn't seem to be a good way around this. The simple solution would be
to always open files in read/write mode, but that has obvious safety downsides.
Any other solution would significantly complicate the file pool code.
Deprecating file locking seems to be the least bad option.
2017-09-17 10:43:27 +02:00
arvidn 1a8660bca7 don't shadow static_category in alerts 2017-09-16 19:58:11 +02:00
arvidn 8d6b51d54c minor cleanups 2017-09-16 13:48:11 +02:00
Alden Torres 582d9dfc24 removed leading :: in posix_fadvise to allow for fix in old android API build (#2341) 2017-09-16 13:47:49 +02:00
arvidn 93bb84d94c some random cleanup 2017-09-13 08:28:46 +02:00
arvidn ccbd6cbcfe remove rss_reader.py, since rss has been reprecated. fix python binding for torrent_handle, to be hashable. update client_test.py to not use deprecated APIs and follow best (libtorrent) practice 2017-09-11 22:28:57 +02:00
Steven Siloti df8a57efb7 select which DHT port to report based on the connection's local endpoint (#2316) 2017-09-10 10:25:04 +02:00
arvidn 55228756e5 make disk job flags type safe 2017-09-10 08:56:52 +02:00
Alden Torres a86bc767de minor cleanup and code refactor in web_peer_connection.cpp (#2322) 2017-09-10 08:52:31 +02:00
Alden Torres 7cc2619aad more use of auto and minor code refactor in routing_table.cpp 2017-09-08 08:49:06 +02:00
arvidn c848f6d978 improve some asserts in storage.cpp 2017-09-07 23:00:58 +02:00
arvidn bb51dcdbb9 move dht_settings into its own header cpp file-pair and dht_settings into the dht namespace 2017-09-04 22:38:16 +02:00
arvidn 95c8c3018a use span in gzip, http_parser and http_connection 2017-09-04 22:33:38 +02:00
arvidn 061732ddec bump version 2017-09-04 15:35:45 +02:00
arvidn 53ff169db1 use string_view in find_metric_idx 2017-09-04 07:50:13 +02:00
arvidn fe1c395579 merged RC_1_1 into master 2017-09-03 13:57:19 +02:00
Steven Siloti 5361ffc1c2 add_file_borrow: use string_view instead of pointer, size parameters (#2302) 2017-09-02 23:58:36 +02:00
arvidn 7087a16b36 move some initialization of torrent from start() into the constructor 2017-09-02 21:24:00 +02:00
arvidn 24d08cdf82 fix protocol_str in portmap_alert 2017-09-02 10:39:55 +02:00
arvidn 2025c15ec1 cleanup tokenize_string -> split_string 2017-09-02 07:46:16 +02:00
arvidn f8ba4f480f use span in parse_utf8_codepoint 2017-09-02 07:03:46 +02:00
arvidn 11f008e90e use a strong typedef for port mapping id 2017-09-02 07:02:07 +02:00
Alden Torres ac914d4415 avoid port mapping of local addresses (#2296) 2017-09-01 19:28:27 +02:00
Steven Siloti f022285b13 include endpoint in tracker alerts 2017-09-01 13:38:36 +02:00
Arvid Norberg f734ad067b straighten out some type-safety in port mapping enums (#2285) 2017-08-30 20:47:49 +02:00
Alden Torres fe09ca9b97 more use of auto, const and minor cleanup in session_impl.cpp 2017-08-30 20:30:06 +02:00
Steven Siloti 621da10e60 hold an owning reference to storage objects in try_flush_write_blocks
It is possible for all other references to a storage object to be
destroyed while try_flush_write_blocks is running. If the storage is
destroyed then find_piece will crash when trying to re-aquire the
shared_ptr. To prevent this, keep the storage alive by holding a
shared_ptr to it in try_flush_write_blocks.

Normally the fence job when stopping a torrent would prevent the storage
object from being destroyed until all flush jobs are complete.
try_flush_write_blocks can be run after every disk job though so it has
the potential to "stradle the fence".

If the associated torrent does get unloaded then it is expected that
find_piece will return NULL thus causing the entry to be ignored.
2017-08-30 12:45:06 +02:00
Alden Torres d0ea585859 minor code optimization in broadcast_socket.cpp 2017-08-29 22:29:11 +02:00
Steven Siloti 52ccad23b9 read_piece: handle failure to allocate piece buffer 2017-08-29 12:24:17 +02:00
Alden Torres 5db597c8b3 more use of std::tuple_size<> and empty() 2017-08-28 22:47:34 +02:00
Arvid Norberg 1075ae3b8d remove session pool allocator and use the buffer class instead (#2274)
simplify append_buffer by using size() to determine size of the buffer. make the move explicit in chained_buffer::init_buffer_entry
2017-08-28 11:37:53 +02:00
Steven Siloti d4986f878f treat unique local addresses as local
These addresses are not globally routable so they should be considered local.
2017-08-28 11:34:47 +02:00
Arvid Norberg d250ba5a17 wrap destination string in i2p_peer in string_ptr handler (#2268) 2017-08-25 09:42:46 +02:00
arvidn 1ce4089229 log failures to parse interface and node lists from settings 2017-08-24 07:59:22 +02:00
arvidn e92cbf502c remove the last use of session_impl get_ipv6_interface and get_ipv4_interface 2017-08-23 21:01:15 +02:00
arvidn 1290e6f5af simplify buffer handling in rc4_decrypt calls 2017-08-23 07:01:12 +02:00
arvidn 22c047f8a0 factor out and simplify get_syncoffset 2017-08-23 06:59:44 +02:00
arvidn f311bf354e remove left-overs from disk buffer pool allocator 2017-08-21 16:36:00 +02:00
Alden Torres 5130827fc7 minor code refactor and cleanup in bt_peer_connection (#2261) 2017-08-21 11:00:00 +02:00
arvidn d59d394d5b remove residual mentions of mtu for interfaces 2017-08-20 22:34:20 +02:00
Alden Torres 66734e2e5b using if_indextoname instead of RTM_GETLINK to fill the interface name in enum_net_interfaces (#2253)
using if_indextoname instead of RTM_GETLINK to fill the interface name in enum_net_interfaces. removed IFA_LABEL switch case, removed ip_interface::mtu, master rebase
2017-08-20 10:55:59 +02:00
arvidn fe37884bc6 fix IPv6 tracker support by performing the second announce in more cases 2017-08-19 18:56:51 +02:00
Steven Siloti 2365611507 remove support for using a pool allocator for disk buffers (#2257) 2017-08-19 11:04:39 +02:00
Steven Siloti 73e898e38e disable disk cache pool allocator by default
The pool allocator has known issues with not releasing memory when it should
and is of dubious benefit.

See #2251
2017-08-18 09:39:24 +02:00
Alden Torres 070066e892 more use of emplace_back and minor code simplification 2017-08-17 08:08:51 +02:00
arvidn 05b5b4ef4d merged RC_1_1 into master 2017-08-16 22:46:47 +02:00
arvidn b5fe0f95a2 fix issue in UTF-8 encoding validation 2017-08-16 13:15:19 +02:00
arvidn b70d3efba9 fix infinite loop when parsing torrents whose filenames have zeroes. #2247 2017-08-16 07:21:34 +02:00
Alden Torres bde4718e3f typos, auto loop refactor and more std:: 2017-08-16 07:01:50 +02:00
Alden Torres 6a3be6cfd3 minor trivial code optimization 2017-08-15 23:30:28 +02:00
arvidn fcb9c7b6f3 fix invalid read in parse_int() in bdecode_node() and lazy_bdecode() 2017-08-15 00:01:37 +02:00
Alden Torres 48de05ba82 lint-based code review in utp related code 2017-08-13 07:49:43 +02:00
Steven Siloti 50c2aee8ec don't create web seed connections if the torrent is upload only
The fix in 9a63d4696e was imcomplete.
It turns out disconnect_if_redundant decrements the connection count
which unballances the count if we do end up disconnecting the peer.

This change avoids the problem by checking if the torrent is
upload only much sooner, before the connection object is even created.
We still do a redundancy check just-in-case, but it is not expected to
trigger.
2017-08-11 08:16:00 +02:00
Alden Torres 0ac01a8532 header fix for use of stringstream 2017-08-10 22:02:10 +02:00
arvidn 5f4816f1d8 fix include in http_connection.cpp 2017-08-10 19:47:42 +02:00
arvidn 865ff09a84 merge RC_1_1 into master 2017-08-10 16:44:57 +02:00
arvidn 560ef29276 fix issue with very long tracker- and web seed URLs. Instead of using a fixed length stack allocated request buffer, use a dynamically growing stringstream 2017-08-10 14:01:11 +02:00
arvidn 4e497e1383 fix issue where paths were not correctly coalesced when adding files to file_storage (used more memory than necessary) 2017-08-10 12:10:46 +02:00
arvidn bb6f2b9837 extend file_storage tests. Make pad files separate paths and file names properly 2017-08-10 01:33:35 +02:00
arvidn 378a0e974b fix issue of force-recheck or seeding from read-only media, torrents with empty files in them. Previously libtorrent would create empty files up-front unconditionally, now they won't be created if they already exist 2017-08-09 18:48:49 +02:00
Alden Torres 721c4d016a more use of emplace_back in write_resume_data (#2221) 2017-08-09 00:19:11 +02:00
Alden Torres 8ed17ab311 minor code refactor, more use of nullptr, typos 2017-08-07 21:15:14 +02:00
arvidn 2b98951ace assert that trackers are not announced to while checking files 2017-08-06 20:21:03 +02:00
arvidn 1f3730fa5a fix force-recheck issue (new files would not be picked up) 2017-08-06 09:49:51 +02:00
Alden Torres 0b83b6b6df fix typo and extra ::alert 2017-08-06 04:28:36 +02:00
arvidn 7b98af8145 improve type-safety of observer_flags and traversal_flags 2017-08-05 20:20:13 +02:00
Steven Siloti f2d1a283bc Call DebugBreak on assertion failure 2017-08-05 03:01:59 +02:00
Alden Torres 1e05a91f99 added some std:: in public api 2017-08-05 02:44:25 +02:00
arvidn 5bf28e37b8 make create_torrent flags type-safe 2017-08-04 21:23:42 +02:00
Alden Torres cb114a80e1 reverted ino_t cast and added fix only for android 2017-08-04 21:22:20 +02:00
arvidn 6b1037eff5 convert enum values that are just used as constants, to actual constants with the correct type 2017-08-04 15:23:20 +02:00
arvidn a8a5986046 make file attributes (in file_storage) type safe 2017-08-04 07:38:57 +02:00
Alden Torres 35232a5a5f fixed -Wshorten-64-to-32 in 32 bits and explicit nullptr check 2017-08-04 06:07:18 +02:00
arvidn 6fa181ece8 some cleanup of type-safe flags 2017-07-30 18:20:15 -07:00
arvidn 322007bb6a make save_state_flags a strong type 2017-07-30 09:06:41 -07:00
arvidn 69bd2986de convert a few more torrent_handle flags to type safe types 2017-07-27 13:16:23 -07:00
arvidn 204a029b5f merged RC_1_1 into master 2017-07-27 11:37:02 -07:00
arvidn 24e4263bae make torrent status flags be type safe 2017-07-27 09:33:35 -07:00
arvidn 5222d92e9f make resume_data_flags type safe 2017-07-27 00:07:15 -07:00
arvidn 8d0f38930e make udp send flags type safe 2017-07-26 18:09:17 -07:00
arvidn 83ca755d1b simplify setup_listener 2017-07-26 12:02:58 -07:00
arvidn cd343c91bc make base32encode flags type safe 2017-07-26 10:38:14 -07:00
arvidn b38efb6c65 make alert category flags be a strong type 2017-07-26 07:20:47 -07:00
arvidn c167e28788 move stack allocator implementation into its own cpp file 2017-07-23 16:49:24 -07:00
arvidn 330904f460 convert picker_flags_t to type safe flags 2017-07-23 09:29:25 -07:00
arvidn 78bbd298a5 convert file_open_mode to type safe flags 2017-07-22 23:58:24 -07:00
Steven Siloti 140b8ace8d remove use of deprecated function readdir_r 2017-07-22 22:40:17 -07:00
arvidn c4eb4c8b5f use span in torrent_info constructors and deprecate the redundant flags argument 2017-07-22 00:00:44 -07:00
arvidn cedd468300 backport fix to clearing of piece picker in suggest_read_cache mode 2017-07-22 00:00:14 -07:00
Steven Siloti 5eba09fce7 changes based on review feedback 2017-07-21 19:18:44 -07:00
Steven Siloti 1a64490ef0 fix 2017-07-21 19:18:44 -07:00
Steven Siloti f0ae2145ea use a handle class for listen sockets instead of raw pointers
Listen socket handles need to be week_ptr so that they can detect when a listen
socket is removed in the middle of a tracker announce on it. Use a wrapper class
to enforce that no one outside of session_impl can hold ownership of the socket
across event boundaries.

To support unit tests, listen_socket_t is also split into a base class which
holds the members needed to support the public listen socket API.
2017-07-21 19:18:44 -07:00
Steven Siloti e0dcd34352 convert m_listen_sockets to a vector of shared_ptr 2017-07-21 19:18:43 -07:00
Steven Siloti 0f30815d8f Revert "don't move listen_socket_t when deleting sockets"
This reverts commit 718c5f0dcb.
2017-07-21 19:18:43 -07:00
arvidn 87ca4bb26f Fix bug where the resume data would fail to load the piece bitmask for seeds when suggest_cache was enabled 2017-07-21 19:06:02 -07:00
arvidn 33a2abebfe submit disk jobs in read_piece() 2017-07-18 07:21:07 -07:00
arvidn f9c45db942 make bandwidth state flags use type-safe flags 2017-07-17 19:03:42 -07:00
arvidn 06070ea499 convert block request flags to type-safe flags 2017-07-17 17:56:07 -07:00
Pavel Pimenov ea8c5b32da add reserve entry::to_string() (#2148) 2017-07-17 15:05:58 -07:00
arvidn c4659bc345 convert peer_flags and peer_source_flags to type-safe flags 2017-07-17 10:22:32 -07:00
arvidn 4947602a2f make add_torrent_params::flags_t an enum class and move it out into its own header 2017-07-17 01:05:31 -07:00
AllSeeingEyeTolledEweSew 00655d562b Refactor several flags to torrent_handle::get_flags/set_flags. 2017-07-17 01:05:31 -07:00
arvidn 73942de97a carve out peer_list_entry into also being deprecated (it was only used by deprecated functions and some tests) 2017-07-16 19:20:29 -07:00
toinetoine b1c3e12cd0 added block_uploaded_alert to allow client to track upload activity 2017-07-16 11:04:03 -07:00
arvidn c4afb5e949 use a dedicated class template for flags types instead of enum class. It's more backwards compatible and improves ergonomics 2017-07-15 01:15:57 -07:00
arvidn c692147c94 merged RC_1_1 into master 2017-07-13 19:55:29 -07:00
arvidn cc30434c52 fix inconsistency in file_priorities and override_resume_data behavior. file_priorities are not subject to the override_resume_data flag 2017-07-12 15:36:55 -07:00
pavel.pimenov a422af1a7b remove call _strchr
_TEXT	SEGMENT
_c$ = 8							; size = 1
?is_space@@YA_ND@Z PROC					; is_space, COMDAT

; 8    : 	static const char* ws = " \t\n\r\f\v";
; 9    : 	return strchr(ws, c) != nullptr;

	movsx	eax, BYTE PTR _c$[esp-4]
	push	eax
	push	DWORD PTR ?ws@?1??is_space@@YA_ND@Z@4PBDB
	call	_strchr
	add	esp, 8
	neg	eax
	sbb	eax, eax
	neg	eax

; 10   : }
2017-07-12 15:34:45 -07:00
d-komarov 85cf521145 fix bandwith rate limit calculation (#2134)
back-port of fc0cbfb789
2017-07-11 21:35:12 -07:00
Steven Siloti 2e79c5e648 fix handling of SSL listen sockets 2017-07-10 21:41:39 -07:00
d-komarov 11d6a00bec fix storage destruction order issue (#2138)
back-ported from b553cb32f7
2017-07-10 21:35:34 -07:00
Steven Siloti 389b4eb3f2 make listen_socket_t non-copyable and non-movable (#2137)
The DHT stores a pointer to this struct so it must not be copied or moved once
it is stored in m_listen_sockets.
2017-07-10 10:14:36 -07:00
Steven Siloti 718c5f0dcb don't move listen_socket_t when deleting sockets
Pointers to listen_socket_t are stored in dht_tracker, so they
cannot be copied or moved once they are added to m_listen_sockets.

listen_socket_t should really be made non-copyable and non-moveable, but the
socket creation path needs to be refactored before that can be done.
2017-07-08 08:42:04 -07:00
Alden Torres 80036f0377 avoid executing timed async task if the dht node is already removed (#2133) 2017-07-08 08:32:24 -07:00
Alden Torres 10bfe18ebe added consts and minor code formatting 2017-07-03 16:58:49 -04:00
Alden Torres 285daa21a5 fixed another shorten-64-to-32 warning in netlink code 2017-07-03 13:53:15 -04:00
Steven Siloti ec2fb91aa5 reject put messages with incorrect bencoding (#2118)
add function to check for soft bdecode errors. reject put messages with incorrect bencoding
2017-07-02 18:30:32 -04:00
arvidn 5188c190db bump version number 2017-07-02 15:03:46 -04:00
arvidn 5c37eb174f drop support for windows compilers without std::string and wchar_t (believed to be old cygwin) 2017-07-02 08:24:55 -04:00
pavel.pimenov 7af38ba05a add const and static 2017-06-30 16:07:23 -04:00
pavel.pimenov 92a923134c fix generate_token 2017-06-30 13:22:30 -04:00
arvidn db09332a02 merged RC_1_1 into master 2017-06-30 08:58:21 -04:00
arvidn 20c1407612 corrected missing const qualifiers on bdecode_node 2017-06-30 08:19:10 -04:00
Alden Torres a78ec94184 fixed compilation warnings in enum_net netlink code 2017-06-29 15:48:28 -04:00
arvidn 3c8450d47c fix backwards compatibility issue when loading the torrent info dict from resume data 2017-06-29 15:03:49 -04:00
arvidn 506950001d fix regression where paused torrents could not have their queue position changed 2017-06-27 12:37:08 -04:00
Steven Siloti 20e05a12ac broadcast_socket: remove obsolete special case
enum_net_interfaces now fills in the scope_id correctly so there's no need for
a special case to set it here.
2017-06-27 08:09:20 -04:00
Steven Siloti bbf361336b Use netlink to enumerate network interfaces on linux (#2105)
* move getting a table dump over netlink to a separate function
* use netlink to enumerate network interfaces on linux
2017-06-27 00:34:24 -04:00
Steven Siloti 0a9e2c965d invert logic in read_nl_sock for better clarity and reliability (#2101)
The seq and pid parameter are apparently used as a safety check in case
a stream of netlink messages is not properly terminated. I initially thought
that they represented the expected values of the incoming messages.
Instead seq is set to one-past the expected value and the loop aborts when
seq and pid match the message.

Inverting the logic so that reading continues as long as the seq and pid match
the incoming messages is, to me at least, more intuitive. It is also more
reliable since it does not rely on the next seq being strictly sequential. It
also catches unexpected messages preceding or interleaved with the expected
messages.

There seems to be a lot of confusion all across the internet over the
nlmsg_pid field. The changes here were made based on examination of the
kernel source and iproute2 (a common user of netlink).

The kernel does not read nlmsg_pid at all for routing messages.
Iproute2 sets it to zero unconditionally so I changed this code to do the same.
2017-06-25 10:29:32 -04:00
arvidn 2b91b1070d merged RC_1_1 into master 2017-06-24 12:37:13 -04:00
Steven Siloti ec30a5e9ec fix out-of-bounds read in bdecode
Fixes #2099
2017-06-24 10:52:49 -04:00
arvidn ed79929528 factor out has_any_file to storage_utils 2017-06-23 16:33:48 -04:00
arvidn b7642f75d5 move clear_bufs out of storage.cpp into storage_utils 2017-06-21 13:04:05 -04:00
arvidn f85c01cc0a merged RC_1_1 into master 2017-06-21 00:51:43 -04:00
arvidn 77cc2b4eea fix re-check issue after move_storage 2017-06-20 22:27:39 -04:00
Alden Torres 687e0ea4b4 added consts and minor auto refactor in upnp.cpp 2017-06-20 17:59:05 -04:00
Alden Torres 18eef80676 avoid runtime fail with wrong arguments in upnp::update_map (#2094) 2017-06-20 15:06:14 -04:00
Alden Torres f6ca04638c added const and auto refactor in torrent, piece_picker 2017-06-20 13:20:12 -04:00
arvidn aa842948a3 storage_params cleanup 2017-06-20 10:27:28 -04:00
arvidn 046bb76361 handle invalid arguments to set_piece_deadline() 2017-06-19 05:46:08 -04:00
arvidn 35491bc476 convert remaining alerts to use operation_t instead of string literal 2017-06-18 22:05:50 -04:00
arvidn f04d729d43 enforce spell checking on CI 2017-06-18 15:51:51 -04:00
arvidn ff454a92d4 unify some operation-enums and strings to use operation_t 2017-06-18 07:31:45 -04:00
arvidn 53cbb607d0 first steps towards spell checking documentation 2017-06-17 22:59:57 -04:00
arvidn ff8703e862 make alert types ABI compatible between builds with deprecated members enabled and without 2017-06-17 16:07:06 -04:00
arvidn b80c477733 merged RC_1_1 into master 2017-06-16 00:24:41 -04:00
arvidn a97121d6f2 move_storage did not work for torrents without metadata 2017-06-15 21:20:22 -04:00
arvidn 1fd350cf60 make operation_t an enum class, for type safety 2017-06-15 07:00:06 -04:00
Steven Siloti a48cdd0281 fix check for fully allocated file on windows
The file allocation size is in terms of clusters so it will likely be larger
than the file size even with a freshly allocated file.
2017-06-15 06:36:34 -04:00
arvidn 3f09d16e3c defer reconnecting peers to after the second_tick loop (to avoid mutating m_connections while iterating over it) 2017-06-14 10:35:50 -04:00
arvidn 3215deb2c5 make io_service::work accounting more accurate in asio-debugging=on 2017-06-14 07:01:06 -04:00
arvidn 9a19ff344b remove resolve_links disk job left-overs and convert some C-arrays to std::array 2017-06-13 20:35:55 -04:00
Alden Torres 48ef3b6bf7 implemented support for BEP 51 (#1652) 2017-06-12 11:54:11 +02:00
arvidn 147d996160 make the job action enum an enum class 2017-06-11 23:53:58 +02:00
arvidn f3d319b677 fix internal use of deprecated function identify_client 2017-06-10 08:16:23 +02:00
Andrei Kurushin fc0cbfb789 fix bandwith rate limit calculation (#2060) 2017-06-08 12:50:55 +02:00
arvidn 4de9f6a75b remove requester parameter to disk read jobs 2017-06-08 12:38:25 +02:00
Alden Torres e38887cb3c added add_torrent_params.cpp and moved is_nothrow asserts to cpp files (#2059) 2017-06-07 16:41:28 +02:00
Alden Torres b1b3f0e3e8 one more fix related to typed_span conversion (#2050) 2017-06-02 06:42:03 +02:00
arvidn 6967d17a42 make move constructors and move assignment operators noexcept 2017-06-01 23:42:15 +02:00
pavel.pimenov 781a35a210 use operator+=(char) 2017-06-01 16:21:27 +02:00
Arvid Norberg 5344761da4 make flags to move_storage a proper enum class (#2043) 2017-06-01 04:15:15 -04:00
Alden Torres c5cdd381da fixed compilation warnings with newer versions of clang (#2047) 2017-06-01 04:12:02 -04:00
Pavel Pimenov d0ff2200f9 torrent::remove_connection refactor (#2046) 2017-05-31 21:59:16 -04:00
Steven Siloti 67a530f3ab only listen on preferred IPv6 addresses on Windows
We shouldn't listen on addresses which are duplicates, deprecated,
or tenative unless explicitly requested.

This is only supported on Windows for now because the Linux interface
to get this information is much less convenient for libtorrent to use.
As far as I've been able to determine, Linux only exposes this information
via the RTM_NEWADDR and RTM_GETADDR netlink messages. Currently libtorrent
uses getifaddrs() to enumerate network interfaces on Linux so this will
probably need to be changed to use netlink if available.

MacOS: ???
2017-05-30 07:38:12 -04:00
arvidn afce0d3a86 make resolver_flags use enum class for improved type-safety 2017-05-29 18:38:59 -04:00
Pavel Pimenov 98a0344196 refactor traversal_algorithm look_for_nodes (#1982) 2017-05-29 12:20:52 -04:00
Steven Siloti 8e600c2201 peer_connection_handle::find_plugin should be const 2017-05-29 07:56:50 -04:00
arvidn a9e5ef1521 merged RC_1_1 into master 2017-05-28 12:22:40 -04:00
arvidn ffaabd846c make file open mode flags be an enum class for type-safety 2017-05-28 11:16:59 -04:00
Steven Siloti 353ab20280 make session_handle hold a weak_ptr and be copyable (#2034) 2017-05-28 06:41:50 -04:00
Arvid Norberg 660cdaf2d1 deprecate direct access to array in session_stats_alert (#2033) 2017-05-27 20:33:31 -04:00
Pavel Pimenov 4cee8104d7 add base_mapping_t (#2025)
factor out parts of mapping struct from NATPMP and UPnP
2017-05-27 20:26:47 -04:00
Arvid Norberg 94701c24da when stopping a torrent, never perform a name lookup on the tracker (#2021)
when stopping a torrent, never perform a name lookup on the tracker, only announce to trackers whose IP we already know. This is expected to make shutdowns not hang
2017-05-25 14:58:29 -04:00
Arvid Norberg b60b3f164b Merge pull request #2027 from arvidn/RC_1_1
merged RC_1_1 into master
2017-05-24 23:30:24 -04:00
Steven Siloti 40cfceb994 restore find_plugin API (#2026) 2017-05-24 23:29:21 -04:00
arvidn 432131e493 fix error reporting for enum_net_interfaces 2017-05-23 08:54:09 -04:00
arvidn 392f284566 remove some unused stats gathering state in disk_io_thread 2017-05-23 08:16:25 -04:00
arvidn a985773f4b fix previously faulty fix to enum_routes 2017-05-21 23:21:02 -04:00
arvidn 680ca6ea2b merged RC_1_1 into master 2017-05-21 21:02:09 -04:00
Arvid Norberg c7bb9f23ad add debug mechanism to assert the connection list is not mutated while iterating over it (#2016) 2017-05-21 11:36:35 -04:00
arvidn acd98d5c40 delay 5 seconds before reconnecting socks5 proxy for UDP ASSOCIATE 2017-05-21 08:53:29 -04:00
arvidn 604904c80c merge RC_1_1 into master 2017-05-20 15:21:01 -04:00
arvidn 83735fdbb4 fix NAT-PMP crash when removing a mapping at the wrong time 2017-05-20 14:56:04 -04:00
Steven Siloti 22145d8cfa don't assert when removing a link-local IPv6 interface 2017-05-20 06:10:06 -04:00
arvidn e79a7a08b9 fix race condition in storage tick handling in disk_io_thread 2017-05-18 10:21:34 -04:00
Steven Siloti d115c7e296 refactor endpoint search and log a failure to locate a matching socket 2017-05-17 01:34:35 -04:00
Steven Siloti bc019f241b keep iterating over endpoints if one is found to be done
Even if one endpoint is done others may be ready to announce so we need
to keep going.

Fixes #1992
2017-05-17 01:34:35 -04:00
Steven Siloti 893ef6479f don't abort the existing torrent when attempting to add it again 2017-05-17 00:57:52 -04:00
arvidn 73a3e390b5 merge RC_1_1 into master 2017-05-15 09:12:23 -04:00
arvidn 56d5d795bf improve path sanitization (filter unicode text direction characters) 2017-05-15 01:49:41 -04:00
Steven Siloti 4bc9515766 close listen sockets after closing all connections (#1994)
This fixes an assertion failure on shutdown if an IPv6 UTP socket tries
to send a FIN to a closed UDP socket. Because the closed socket reports
its local_endpoint() as udp::endpoint() it trips the protocol check in
send_udp_packet.
2017-05-14 20:16:47 -04:00
arvidn 9333c51da6 deprecate partial_piece_info::piece_state 2017-05-14 20:15:55 -04:00
arvidn e870852c66 fix branch factor overflow in traversal algorithm 2017-05-13 08:10:21 -04:00
arvidn e0fa1cd247 merged RC_1_1 into master 2017-05-12 21:46:45 -04:00
arvidn ff63557f58 bind upnp requests to correct local address 2017-05-12 18:17:38 -04:00
arvidn f8bda070be don't combine reuseaddr and exclusive addruse on windows 2017-05-11 22:30:29 -04:00
arvidn bfa455c5bd save resume data when removing web seeds 2017-05-09 13:11:28 -04:00
Jan Berkel b3815c5533 HTTP proxy: avoid connecting to itself (#1978) 2017-05-08 11:04:17 -04:00
arvidn b1b4360df6 merged RC_1_1 into master 2017-05-08 07:48:42 -04:00
arvidn 14dbd1c92d fix race condition in disk I/O storage class 2017-05-07 13:47:50 -04:00
Alden Torres 0b391d6351 avoid extra sha1_hash memory copy, minor formatting (#1968) 2017-05-04 17:35:40 -04:00
Pavel Pimenov 11c75da314 add trailing slash (#1969) 2017-05-04 17:35:00 -04:00
Jan Berkel fe9f877087 Set connection timeout when next endpoint is tried (#1952) 2017-05-04 17:32:47 -04:00
arvidn 76ef0babed remove deprecated file_base feature of file_storage 2017-05-04 12:03:31 -04:00
Pavel Pimenov 0ac16532ee remove unique.count(url) (#1964) 2017-05-03 20:18:30 -04:00
Alden Torres fd51c0b8bf minor refactor in file_storeage and typos 2017-05-02 22:34:11 -04:00
arvidn af495da56b use std::function instead of the fileop interface for readwritev() 2017-05-02 08:07:29 -04:00
Arvid Norberg 1af17be046 use enum class for ssl bool in listen socket (#1960)
use enum class for ssl bool in listen socket. use std::array instead of C array. make test_listen_socket a bit more compact
2017-04-30 21:11:42 -04:00
arvidn 749d0da875 make iovec_t an alias for span<char>, in preparation for removing it altogether in favour of span 2017-04-30 11:49:08 -04:00
Steven Siloti 540e1046e7 remove deprecated udp functions 2017-04-30 08:11:56 -04:00
Steven Siloti 259559851c fix indentation 2017-04-30 08:11:56 -04:00
Steven Siloti fd50630020 announce to trackers for all listen interfaces 2017-04-30 08:11:56 -04:00
arvidn 23ba9d12d1 construct and destruct objects in stack allocations (alloca()) 2017-04-28 21:34:31 -04:00
Alden Torres 4ea318faa0 compilation fix when not TORRENT_ASSERT 2017-04-26 13:46:35 -04:00
arvidn a9a12e873f make DHT bootstrapping more robust by not throwing away nodes 2017-04-25 23:03:52 -04:00
arvidn 4eb5155263 use span<> for peer_connection::send_buffer 2017-04-25 23:02:32 -04:00
Steven Siloti 761436dc97 add support for utp over multiple interfaces (#1944) 2017-04-25 23:00:41 -04:00
arvidn 1ea760ae93 fix iconv cast warnings 2017-04-24 08:02:11 -04:00
arvidn e4dbd28920 need_save_resume_data() will no longer return true every 15 minutes. If clients want to save resume data regularly, they can call save_resume_data() with whatever interval they choose 2017-04-23 20:53:09 -04:00
Andrei Kurushin 027fa5e290 fix MSVC 14.1 warnings-as-errors=on build (#1939) 2017-04-23 20:52:37 -04:00
Steven Siloti bcfaf9621a fixes from review 2017-04-23 19:49:49 -04:00
Steven Siloti cdd50be859 create a separate DHT node for each listen socket 2017-04-23 19:49:49 -04:00
Jan Berkel afe1f685a4 Set next/min_announce to now
Prevents unnecessary tracker announce delays #1940
2017-04-23 16:00:53 -04:00
arvidn 7dd11268dd removed use of boost::uintptr_t for better compatibility 2017-04-23 11:15:43 -04:00
Alden Torres b863306c8b minor code cleanup (#1933) 2017-04-22 21:33:38 -04:00
Alden Torres 735214a806 avoid connections to trackers when the event is stopped and stop_tracker_timeout <= 0 (#1932) 2017-04-22 18:33:26 -04:00
arvidn b553cb32f7 fix storage destruction order issue 2017-04-22 17:30:31 -04:00
arvidn 04c76249b6 merged RC_1_1 into master 2017-04-21 01:21:31 -04:00
arvidn 227830e757 fix memory leak in the disk cache. if a cached_piece_entry would stick around in a ghost list (ARC), it would keep the torrent object itself alive. when aborting read jobs, the outstanding_read flag need to be cleared on the piece. When reclaiming a block for a piece that should be deleted (not just evicted) it need to know that. This patch adds an additional bit to cached_piece_entry to communicate this 2017-04-19 22:30:27 -04:00
arvidn 8eafd84273 merge send_message utility functions in bt_peer_connections into a template 2017-04-19 22:27:30 -04:00
Jan Berkel cdf066c4e1 magnet links: unescape hash parameter (#1925) 2017-04-19 00:52:35 -04:00
Alden Torres 87592d50f2 minor typos and documentation changes in settings 2017-04-18 17:51:26 -04:00
arvidn 2d6268b580 fix double free in disk cache 2017-04-17 19:54:05 -04:00
Pavel Pimenov 9ebbcc2d69 add send_*_message (#1922)
factor out common message sending code in bt_peer_connection
2017-04-17 16:26:16 -04:00
arvidn df299fcb00 use boost::variant for disk_io_job in/out parameter, to support holding a proper disk io buffer handle and string 2017-04-17 15:08:27 -04:00
Pavel Pimenov 7d09dba14e add const (#1917) 2017-04-16 07:27:47 -04:00
Steven Siloti 969c0167d4 remove calls to RAND_add
This function has been removed from LibreSSL and offers dubious value.
The PRNGs in modern operating systems are robust enough that these little extra
bits arn't going to make a difference.
2017-04-15 22:00:29 -04:00
arvidn cef9773c70 generalize part_file::export_file to pass back the buffers to a callback function 2017-04-15 20:01:18 -04:00
Steven Siloti f86e207ba2 fix typo in natpmp::start
Calling update_mapping() on a mapping with protocol set to none is a no-op so
I'm pretty sure this check was meant to skip over such mappings.
2017-04-15 15:28:01 -04:00
arvidn 48e61b947a remove mutex-release hack in file_pool 2017-04-14 12:45:18 -07:00
Alden Torres ce23e0a82d source code cleanup in ip_notifier 2017-04-12 16:11:53 -04:00
arvidn 480bde9333 change formatting of namespace declarations 2017-04-12 14:26:35 -04:00
Alden Torres 591d9716c3 refactored windows based ip_notifier in a separated class 2017-04-12 13:53:16 -04:00
Alden Torres 266beaaab2 refactored netlink based ip_notifier in a separated class 2017-04-12 09:50:18 -04:00
Alden Torres 81d669399b added reachability based ip_change_notifier_impl for iOS (#1902)
added reachability based ip_change_notifier_impl for iOS
2017-04-11 23:53:13 -04:00
arvidn 79d7ae3638 separate path and filesystem functions out into its own translation unit/header file pair, separating it from the file and directory class 2017-04-11 18:07:55 -04:00
Alden Torres a1df74a404 refactor/cleanup in ip_notifier code 2017-04-10 13:22:07 -04:00
Arvid Norberg 09274842f7 fix resume data issue in client_test and some warnings (#1897)
fix resume data issue in client_test and some warnings
2017-04-09 09:37:06 -04:00
Arvid Norberg c35718d322 use unsigned integer for file and storage flags (#1895)
use unsigned integer for file and storage flags
2017-04-09 01:28:46 -04:00
Arvid Norberg 13b16a63a3 use unsigned type for file flags. make file_pool private to disk_io_thread (#1894)
use unsigned type for file flags. make file_pool private to disk_io_thread. move close_file_interval logic to the disk thread. don't expose file in public interface, and make pool_file_status properly public (not part of file_pool and renamed to open_file_status), this is exposed in public interface via torrent_handle::file_status()
2017-04-08 18:24:50 -04:00
arvidn 86f67bd9d9 return a reference instead of pointer to file_storage in storage_interface 2017-04-07 20:27:38 -04:00
Alden Torres e4bdd14ae7 implemented ip_change_notifier_macos (#1891)
implemented ip_change_notifier_macos
2017-04-07 17:53:12 -04:00
arvidn 51c42adc3e steps towars making file_pool private to disk_io_thread 2017-04-07 08:38:35 -04:00
Alden Torres df0a3bd015 moved current ip_change_notifier implementation to compilation unit (#1890)
moved current ip_change_notifier implementation to compilation unit
2017-04-05 23:42:37 -04:00
Alden Torres cec874591d moved ip_notifier.hpp to aux_ 2017-04-05 20:37:32 -04:00
Alden Torres 65cf7af722 using unique_ptr for m_ip_notifier in session_impl 2017-04-05 17:43:12 -04:00
arvidn 9e5822dfba remove unused m_tick_residual accounting 2017-04-05 01:35:39 -04:00
Alden Torres 0132221031 minor code cleanup, std:: prefix, consts, typos 2017-04-04 23:12:48 -04:00
Alden Torres 45bea967c2 added resolver_cache_timeout setting (#1878)
added resolver_cache_timeout setting
2017-04-04 18:23:37 -04:00
arvidn b367a0cd50 fix simulator build warnings 2017-04-02 20:48:36 -04:00
arvidn b065536023 bump version number 2017-04-02 18:34:45 -04:00
arvidn 5105714211 fix typo 2017-04-02 15:49:20 -04:00
Alden Torres bb9b5bf4b8 schedule peer removal only if properly attached and handle special case of attach_peer (#1872)
schedule peer removal only if properly attached and handle special case of attach_peer
2017-04-01 12:15:20 -04:00
arvidn 0319b53d5f imrove some test coverage and fix bug in trim() function 2017-03-31 09:43:25 -04:00
pavel.pimenov 6afb0fd51b fix m_host_resolver (for RC_1_1) 2017-03-31 07:29:03 -04:00
arvidn 6584423737 don't include base32encode in the build when i2p is disabled 2017-03-31 07:24:50 -04:00
Alden Torres 990756ca38 code cleanup related to async_resolve (#1873) 2017-03-30 23:00:59 -04:00
Arvid Norberg 65a2413797 make parse_magnet_uri take a string_view instead of std::string (#1870)
make parse_magnet_uri take a string_view instead of std::string
2017-03-30 22:55:54 -04:00
arvidn d720b282b8 Merge branch 'master' of https://github.com/arvidn/libtorrent 2017-03-30 18:14:09 -04:00
arvidn 0b6fe4d0bd merged RC_1_1 into master 2017-03-30 18:07:24 -04:00
Pavel Pimenov 923f2c48fc fix m_host_resolver (#1871)
fix initialization order of m_host_resolver and m_tracker_manager
2017-03-30 08:47:41 -04:00
Arvid Norberg b8e77444d5 use span for read_resume_data() (#1867)
use span for read_resume_data()
2017-03-29 16:10:32 -04:00