Commit Graph

7049 Commits

Author SHA1 Message Date
Alden Torres 83dd6c9c53 cleanup and refactor in storage source code 2018-04-25 16:02:30 -04:00
Arvid Norberg b4d2281e53 honor torrent abort even on file check error 2018-04-24 23:14:48 -04:00
Xiyue Deng 21d8e9e26b Add missing header <cstdarg> for va_list.
* Fix building on OpenBSD.
2018-04-24 23:09:25 -04:00
arvidn 3ede0b9c20 fix last_upload, last_download and last_scrape to be reported accurately and saved/restored in resume data 2018-04-22 06:14:22 -04:00
Alden Torres d34973def9 minor code cleanup in disk buffer code 2018-04-21 23:48:40 -04:00
Arvid Norberg d8c022070f merged RC_1_1 into master 2018-04-21 17:17:55 -04:00
TheOriginalWinCat bcb9e4546f Use settings_pack::urlseed_wait_retry for default retry with http seeds. (#2948)
Update documentation
2018-04-21 18:36:56 +02:00
d-komarov 44479bcca3 Fix storage initialization (#2944)
If `default_storage::has_any_file` fails during fastresume data check, `piece_manager::check_no_fastresume` will skip storage initialization. In such case, any storage operation that require part file will cause an application crash.
2018-04-21 18:35:55 +02:00
arvidn 52e1a7b6c9 merged RC_1_1 into master 2018-04-15 11:00:57 +02:00
arvidn 9cd0ae67e7 another boost-1.67 build fix 2018-04-13 14:43:41 +02:00
Alden Torres 791a1e8557 minor code refactor and a few const in torrent.cpp 2018-04-13 14:17:02 +02:00
arvidn f0227451a6 merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
Steven Siloti 236e0e7699 pass default constructed boost::function instead of NULL
Clang 6 defines NULL as nullptr which breaks implicit construction
of boost::function from NULL.
2018-04-12 14:32:31 +02:00
Alden Torres 9b1e79660f removed unnecessary parentheses around min/max, added some const modifier (#2926) 2018-04-11 15:19:00 +02:00
arvidn aaf9304a3b update year in copyright header 2018-04-09 09:04:33 +02:00
arvidn 105934e578 bump version 2018-04-08 23:08:39 +02:00
arvidn c5a5e084dd :strtoll() returns LLONG_MAX if the input overflows. Handle this case properly in the http parser 2018-04-08 18:34:25 +02:00
arvidn a7406de2b8 remove the global cache of the current time, just use clock::now() instead 2018-04-07 21:43:18 +02:00
V.G. Bulavintsev c08a6bf430 Make SACK header to be able to take up the whole packet. Rename m_in_buf_size to m_receive_buffer_capacity 2018-04-07 18:55:14 +02:00
V.G. Bulavintsev 257f625e2e Increase m_in_buf_size and max_packet_reorder to better handle links with high latency 2018-04-07 18:55:14 +02:00
V.G. Bulavintsev bf2f0a9c55 Fix advertised window being counted twice in congestion check 2018-04-07 18:55:14 +02:00
Fernando Rodriguez 9d83da110b Delay hash_failed_alert until on_piece_sync()
Delay the hash_failed_alert until after synchronizing with the IO thread
so that it can be used to synchronize piece progress.
2018-04-07 15:59:40 +02:00
Alden Torres d6edf26e11 minor code tidy 2018-04-07 00:30:36 +02:00
Alden Torres 2d9bff0877 make socket_entry buffer std::array 2018-04-06 10:04:32 +02:00
Arvid Norberg 6efff919cd deprecated alert::progress_notification alert category, split into finer grained categories 2018-04-05 16:27:28 +02:00
gubatron 2a82bb5880 disk_io_thread abort_hash_jobs duplicate code refactor 2018-04-05 16:01:30 +02:00
Arvid Norberg 357217326d some cleanups 2018-04-05 12:59:35 +02:00
arvidn 32b2de8f17 merged RC_1_1 into master 2018-04-04 20:48:07 +02:00
Alden Torres 0d9862a8dd fix wrong variable name 2018-04-04 19:41:03 +02:00
Arvid Norberg 16f1deb3ec merged RC_1_1 into master 2018-04-04 15:28:33 +02:00
Arvid Norberg a5e0578c88 fix part-file header allocation 2018-04-03 20:46:49 +02:00
Arvid Norberg 77102102d6 simplify some for-loops in xml_parse 2018-04-03 18:45:04 +02:00
Arvid Norberg 49ae7858a8 fix potential fd leak in enum_net_interfaces 2018-04-03 13:44:33 +02:00
arvidn 98d5313598 don't perform DNS lookups for the DHT bootstrap unless DHT is enabled 2018-04-01 23:53:12 +02:00
Alden Torres 5b922072e9 avoid calls to .address() when looking for endpoint protocol (#2892)
using is_v4 and is_v6 where possible
2018-04-01 13:48:17 +02:00
arvidn 6a2df1034a add some asserts and checks preventing IPv6 addresses to make it into libtorrent when IPv6 support is disabled 2018-03-31 14:17:06 +02:00
Alden Torres 1f06a6684c avoid calling address to test protocol, more consts and minor lint oriented code changes 2018-03-29 12:20:59 +02:00
Alden Torres f963f2c726 minor lint oriented code refactor 2018-03-28 15:55:05 +02:00
Alden Torres 90e4cefa91 removed unnecessary loop in request_a_block 2018-03-28 15:54:50 +02:00
arvidn d080c6f532 merged RC_1_1 into master 2018-03-26 12:56:25 +02:00
d_komarov 1c867a5026 Changing file priorities while checking interrupts checking.
Also, if the last file has zero priority, checking is interrupted prematurely.
2018-03-26 02:59:10 +02:00
arvidn 0fa24faec4 merged RC_1_1 into master 2018-03-25 22:06:41 +02:00
arvidn 02a01fa22e fix issue where the current tracker would be skipped for the next tracker in the same tier 2018-03-25 14:40:38 +02:00
arvidn 67bbb82122 improve type-safety in piece picker, by introducing a type for download queue index, for pieces 2018-03-24 23:03:09 +01:00
arvidn 3171245292 fix warnings 2018-03-24 23:01:19 +01:00
Alden Torres f94a8169fc added some const in bandwidth_limit.cpp 2018-03-24 22:59:54 +01:00
Alden Torres 9cab4d7d31 using move with bw_request and make sure it is movable 2018-03-24 10:48:16 +01:00
arvidn 9df4d4b7f8 replace typedef with using. replace NULL with nullptr. cleanup page_aligned_allocator 2018-03-23 11:19:46 +01:00
Alden Torres 7a477cd938 more use of move and code refactor in bandwidth related code 2018-03-22 18:01:01 +01:00
arvidn 82f87b0655 remove redundant check in tracker announce. This is checked in http_tracker_connection 2018-03-21 23:38:10 +01:00
Alden Torres 6b35ebb9ad some code refactor and cleanup in broadcast_socket 2018-03-21 23:37:52 +01:00
Alden Torres 4bfa920fe7 refactor in macro conditions for helper_getauxval to avoid unused function warning in android x86 2018-03-21 13:45:28 +01:00
Alexandre Janniaux 3efb81e50c add windows socket libraries in Makefile.am 2018-03-21 13:44:59 +01:00
arvidn 8a85e1c01a merged RC_1_1 into master 2018-03-21 12:17:11 +01:00
arvidn 7dad0db4a5 fix warnings in bdecode and disk_io_job 2018-03-20 12:43:44 +01:00
arvidn 09bf97b79e minor fixes in utp_socket_impl 2018-03-18 17:03:05 +01:00
Alden Torres 61ae2c834b removed unused bt_peer_connection::on_keepalive 2018-03-16 17:32:20 +01:00
arvidn 4b144ba451 merged RC_1_1 into master 2018-03-16 13:16:45 +01:00
arvidn 0edb0f28c1 stat files in the disk thread, in default_storage::initialize() instead of the constructor 2018-03-15 14:54:49 +01:00
Alexandre Janniaux 4f7b683eb0 fix if defined TORRENT_ANDROID
Fix malformed TORRENT_ANDROID macroprocessor tests, related to #2831
2018-03-14 09:32:18 +01:00
arvidn 8658fb5f7c deprecate the error_file_* constants whose underlying features have been deprecated 2018-03-13 19:39:55 +01:00
Alexandre Janniaux f8889858f6 dynamically load getauxval so as to support older android devices 2018-03-12 09:11:01 +01:00
arvidn 5c1b65e9b8 merged RC_1_1 into master 2018-03-12 02:32:12 +01:00
arvidn a06e4f696b track whether a file is eligible for using the partfile on a per-file basis. This is intended to improve backwards compatibility, to better support resuming files downloaded with older versions of libtorrent 2018-03-11 12:52:56 +01:00
Alexandre Janniaux 2bc2f3af0f Add missing define for old android sdk (#2831)
define NETLINK_NO_ENOBUFS and IFA_D_DADFAILED if they don't exist
2018-03-09 22:37:21 +01:00
arvidn 05f7a95604 fix reporting &redundant= in tracker announces 2018-03-08 02:11:46 +01:00
Alden Torres 1f86beb253 ask for protocol instead of copy address in ut_pex_peer_store::was_introduced_by 2018-03-07 09:44:45 +01:00
Steven Siloti 5478f57e43 fix windows build with UNC paths disabled 2018-03-06 08:48:19 +01:00
Alden Torres 135e47c929 minimal optimization by using node_id::is_all_zero 2018-03-05 09:01:25 +01:00
Alden Torres 448de4ca14 more use of emplace_back in chained_buffer 2018-03-04 11:34:24 +01:00
Alden Torres 80f5edc500 added some static and const in node.cpp and minor cleanup in rpc_manager.cpp 2018-03-02 11:29:59 +01:00
arvidn 9696082355 merged RC_1_1 into master 2018-02-25 09:36:12 +01:00
arvidn 24dea1f845 fix tie-break in duplicate peer connection disconnect logic 2018-02-21 21:04:28 +01:00
arvidn e81eaf5935 minor cleanup in uTP code 2018-02-21 10:07:22 +01:00
Alden Torres 2ac84ed5f5 minor code cleanup in http_tracker_connection code 2018-02-21 09:23:03 +01:00
arvidn 53b4725da3 clean up noexcept specifiers to adapt to what the implementation provides 2018-02-20 08:43:52 +01:00
Arvid Norberg eec34e3ac3
fix issue with SSL tracker connections left in CLOSE_WAIT state (#2797) 2018-02-20 08:40:47 +01:00
d-komarov f94b62acf7 CMake improvements
CMake build scripts improved to simplify configuring and building of
project and tests.

Better use of compile definitions by replacing add_definitions with
target_compile_definitions. Use INTERFACE, PUBLIC and PRIVATE keywords
to separate scope of TORRENT_BUILDING_SHARED and TORRENT_LINKING_SHARED
definitions.

* Move tests to the separate file - test/CmakeLists.txt
* Fix use of compile definitions
* Remove redundant tailqueue.cpp
2018-02-19 23:23:15 +01:00
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