Arvid Norberg
e88a9a4dda
merged RC_1_1 into master
2018-07-18 10:48:36 +02:00
arvidn
5d3ac8ff5c
fix some warnings
2018-07-18 10:38:45 +02:00
arvidn
f89c27183b
remove unused function
2018-07-18 09:18:09 +02:00
Alden Torres
d9d387d711
minor code cleanup, more use of const ( #3174 )
...
* minor code cleanup, more use of const, using u literal per lint
* revert use of unsigned literal
* reverted loop change
2018-07-16 18:23:38 +02:00
arvidn
4aa3c4573a
use the strong type for pause flags
2018-07-16 12:06:21 +02:00
arvidn
4633258fbe
make the DHT announce flags a strong type
2018-07-16 12:04:16 +02:00
Steven Siloti
e5be30157f
set port in handshake based on source address ( #3172 )
2018-07-15 21:15:04 +02:00
arvidn
52af3eaa7f
simplify preadv and pwritev emulation functions
2018-07-14 09:03:15 +02:00
Andrei Kurushin
7a34b27499
fix Windows "file::preadv" emulation EOF handling
2018-07-12 23:54:34 +02:00
Andrei Kurushin
5399a14027
Windows async read EOF handling ( #3162 )
...
fix Windows "file::preadv" emulation EOF handling
2018-07-12 23:30:50 +02:00
arvidn
7ce20fd9d0
fix bug in read/write resume data functions. add proper tests
2018-07-12 23:19:08 +02:00
arvidn
59343f4f95
merged RC_1_1 into master
2018-07-12 20:20:02 +02:00
d-komarov
490d8eb328
Fix previous patch fixing deadlock in DllMain ( #3158 )
...
Simplify `get_manage_volume_privs()` and renamed it
2018-07-12 16:46:36 +02:00
arvidn
37a6a47ea3
minor cleanups around saving resume data
2018-07-12 08:38:53 +02:00
Steven Siloti
76ef8b9d72
simplify SSL torrent announce flags logic
2018-07-12 08:36:57 +02:00
Steven Siloti
28b6f64c4b
dht: don't set implied_port for SSL torrents
2018-07-12 08:36:57 +02:00
Steven Siloti
961cf62cad
dht: announce with per-interface listen port
2018-07-12 08:36:57 +02:00
Alden Torres
965ca9a565
avoid copy of arrays in dht alerts constructors
2018-07-09 19:53:35 +02:00
Arvid Norberg
e317c72db3
merged RC_1_1 into master
2018-07-08 18:52:13 +02:00
arvidn
3c2b076eb0
deprecated anonymous_mode_alert
2018-07-08 18:26:47 +02:00
arvidn
b750b6cc2c
deprecate (and disable) the force-proxy setting. Instead, always use the proxy when set, never fall back on circumventing it
2018-07-08 18:26:47 +02:00
arvidn
2ba0e5ae2c
move the file priority vector throught the disk_io_job, to avoid copies
2018-07-08 18:25:06 +02:00
arvidn
d2d35b69fd
raise priority of cache_flushed_alert and post it unconditionally when triggered explicily by the client
2018-07-08 18:23:44 +02:00
arvidn
e45df614fe
improve type safety of internal leave_seed_mode() function
2018-07-08 17:32:50 +02:00
Alden Torres
6d2f804d9f
code refactor related to the use of index_range and end index
2018-07-08 17:32:30 +02:00
arvidn
0659a929af
fix some validation issues in read_resume_data()
2018-07-08 17:32:14 +02:00
Arvid Norberg
b60912569f
back-port resume data validation fixes
2018-07-08 17:31:29 +02:00
Arvid Norberg
3fede4b223
merged RC_1_1 into master
2018-07-08 11:55:32 +02:00
arvidn
efe3036879
clean up proxy_settings constructors
2018-07-07 18:02:43 +02:00
arvidn
b5cd959dd1
bump the minimum number of hash jobs per thread from 2 to 4
2018-07-07 18:02:24 +02:00
d_komarov
1c86e94de6
Fix deadlock when loading libtorrent Dll
...
Definition of `bool file::has_manage_volume_privs` involves a call to
`get_manage_volume_privs()`, causing restricted tasks to be performed
from within `DllMain` function. They introduce possibility that client
application deadlocks or crashes.
You should never perform the following tasks from within DllMain:
* Call `LoadLibrary` or `LoadLibraryEx` (either directly or indirectly).
This can cause a deadlock or a crash.
* Call the registry functions. These functions are implemented in
'Advapi32.dll'. If not initialized before your DLL, it can access
uninitialized memory and cause the process to crash.
2018-07-07 18:00:07 +02:00
Arvid Norberg
c7e705e158
merged RC_1_1 into master
2018-07-07 13:33:15 +02:00
arvidn
3249b70cbd
fix recent patch to support setting file priorities on torrents that don't have metadata yet
2018-07-07 11:34:11 +02:00
arvidn
b76c149bdc
use std::aray for the temporary buffer in socks5 UDP socket
2018-07-04 08:17:35 +02:00
d-komarov
6d5a6f05ad
Fix torrent files prioritization ( #3133 )
...
After setting file priority, any subsequent attempt to set different priorities will fail if there is a `file_priority` job running in in disk thread. This happens because `torrent::m_file_priority` is being updated before adding disk thread job. The problem is gone if the file priority vector owned by the torrent object, is modified in the `torrent::on_file_priority` callback, when disk job finishes.
2018-07-04 08:16:33 +02:00
arvidn
10deff2f91
fix some unintentional copies (with explicit moves)
2018-07-01 18:22:32 +02:00
arvidn
d439c8729a
qualify some assignment operators to disallow assignment to temporaries
2018-07-01 17:29:50 +02:00
Alden Torres
2c5da2778a
more lint oriented code refactor/cleanup
2018-06-29 13:27:29 +02:00
arvidn
4576723090
bump version to 1.1.8
2018-06-25 12:25:11 +02:00
Arvid Norberg
ab56bf964f
fix missing move of file object in part_file
2018-06-24 21:34:56 +02:00
arvidn
b67166b29d
merged RC_1_1 into master
2018-06-24 17:59:28 +02:00
Arvid Norberg
78d9c284e9
use more threads when creating torrents
2018-06-24 16:49:57 +02:00
Arvid Norberg
56a25ce280
bump checking_mem_usage default setting
2018-06-24 07:44:58 +02:00
Arvid Norberg
b0b1bfb7a9
enable coalesce_reads and coalesce_writes by default on windows
2018-06-24 07:39:59 +02:00
Alden Torres
be78a43d05
more use of empty(), emplace_back, const and auto in disk_io_thread code
2018-06-24 07:02:17 +02:00
arvidn
2cb29f88ac
merged RC_1_1 into master
2018-06-23 23:22:26 +02:00
Alden Torres
f139afc1ad
minor code refactor, cleanup and typo in peer related code
2018-06-23 23:11:48 +02:00
Steven Siloti
b7f230316c
set the minimum number of checking jobs based on the number of hasher threads
...
To effectively mask the latency of generating more hash jobs there need to be
at least two jobs in-flight for each hasher thread.
2018-06-23 23:10:55 +02:00
arvidn
1e3a7cf0f4
fix hash-job fast-path
2018-06-23 23:08:58 +02:00
arvidn
16b32741ce
fix coalesce read bug
2018-06-23 21:46:52 +02:00
arvidn
7ca769884c
merged RC_1_1 into master
2018-06-22 08:33:44 +02:00
arvidn
0c147164bc
introduce a fast-path for the hash disk job
2018-06-20 01:00:16 +02:00
arvidn
f5a2015302
merge RC_1_1 into master
2018-06-19 22:26:01 +02:00
arvidn
4ae262d2d4
fix race condition in part_file
2018-06-19 14:50:02 +02:00
d-komarov
81ce7aa4ab
Fix parts file i/o errors ( #3110 )
...
Since i/o operations are not synchronized, it is possible that one thread closes file handle, opened in another thread. With addition of `hidden` file attribute, an old bug in `part_file::open_file()` revealed both problems, causing a lot of random i/o errors in parts file. Fixing `open_file` bug should reduce the number of such errors back to 'normal'.
2018-06-18 14:34:39 +02:00
Alden Torres
03971be80b
some refactor, more use of auto and const in peer_connection.cpp ( #3105 )
2018-06-16 17:22:04 +02:00
Alden Torres
dfe47aa2a9
fixed sign implicit conversion warnings in new enum_net code ( #3107 )
2018-06-16 15:19:02 +02:00
arvidn
5530793c75
improve the API for iterating over all files and pieces, with the new strong index types.
2018-06-12 11:44:29 +02:00
Alden Torres
a2ea79de4e
minor code refactor in utp related code, more use of const
2018-06-12 11:41:32 +02:00
Arvid Norberg
b26467c04e
deprecate network-threads setting
2018-06-10 19:34:07 +02:00
Arvid Norberg
6647b0988d
add support for multi-home NAT-PMP and PCP
2018-06-10 16:55:42 +02:00
Steven Siloti
247672820c
report transport version in NAT-PMP send/receive logs
2018-06-09 16:40:46 -07:00
arvidn
e7fe7f1b89
fix boost::get<> invocation for variant
2018-06-10 00:56:55 +02:00
Steven Siloti
f039cffeb3
relax packet length check prior to checking response code
...
Don't assume that an unsupported version response will contain anything past
the response code.
2018-06-09 08:55:49 -07:00
Alden Torres
a357e490ed
minor code refactor, more use of auto
2018-06-08 21:56:06 +02:00
Steven Siloti
fbaa1afd62
return a vector of mapping ids from add_port_mapping
2018-06-07 18:18:31 -07:00
Steven Siloti
e523566622
add support for the Port Control Protocol (PCP)
2018-06-07 18:18:31 -07:00
Steven Siloti
f6720e31ed
don't re-map all listen sockets when changing listen_interfaces
...
New sockets will be mapped regardless of the remap parameter. Requesting
full re-mapping just creates unecessary network traffic.
2018-06-07 18:16:08 -07:00
Steven Siloti
78be52112f
create a natpmp instance for each listen socket
2018-06-07 18:16:08 -07:00
Steven Siloti
496cf46b25
enum_routes fixes on Linux
2018-06-07 18:09:51 -07:00
Steven Siloti
4a578b1450
fix scope_id in enum_routes on Windows
2018-06-07 18:09:51 -07:00
Steven Siloti
72cf4fd9ea
Remove UNC prefixes from device names on Windows
2018-06-07 18:09:51 -07:00
Steven Siloti
603e206f36
fix netmask of routes on Windows
...
The build_netmask function was incorrectly dividing the size of the bytes_type
by 8. Also use b.size() instead of sizeof for consistency.
I'm not 100% certain what the difference between DestinationPrefix.PrefixLength
and SitePrefixLength is. It looks like SitePrefixLength is something specific to
site-local addresses. Emperically I found DestinationPrefix.PrefixLength
contains reasonable values while SitePrefixLength is always zero.
2018-06-07 18:09:51 -07:00
Arvid Norberg
e88339378c
merged RC_1_1 into master
2018-06-07 00:30:23 +02:00
Arvid Norberg
049d867c12
fixed race condition in random number generator
2018-06-06 09:54:49 +02:00
Arvid Norberg
2408200475
fix race condition in stat_cache
2018-06-05 19:07:33 +02:00
Arvid Norberg
794ccf4f79
remove unused disk stats counters
2018-06-05 19:03:04 +02:00
arvidn
267ca40b28
merged RC_1_1 into master
2018-06-02 13:15:13 +02:00
arvidn
c55bc7dd42
improve error handling of failing to change file priority
2018-05-31 00:47:17 +02:00
Alden Torres
8a0ac58658
some lint oriented refactor, more use of const
2018-05-30 23:52:28 +02:00
arvidn
c56f6abf72
deliver notification of alerts being dropped via alerts_dropped_alert
2018-05-30 11:26:02 +02:00
Alden Torres
f9b43f3511
some cast cleanup, const modifier and lint refactor
2018-05-30 00:06:52 +02:00
Alden Torres
6c4869f044
moved instantiate_connection to aux namespace
2018-05-29 09:25:25 +02:00
Steven Siloti
396c5dd3af
remove use of deprecated function readdir_r
...
Ports 140b8ace
onto RC_1_1 branch
2018-05-28 16:06:41 +02:00
arvidn
3b0ce8d2e1
merged RC_1_1 into master
2018-05-28 15:56:22 +02:00
Alden Torres
d6cecee8c0
some code cleanup and minor refactor
2018-05-24 23:46:37 +02:00
arvidn
6ec6c1b340
since moving an existing file into the part file isn't supported, just don't use the partfile for existing files when their priority is set to 0
2018-05-24 23:45:28 +02:00
arvidn
534276e7a5
refactor to use the utility function for bind_socket_to_device() instead of using the bind_to_device socket option directly, to make it best effort. include operation enum in udp_error alert.
2018-05-23 12:11:04 +02:00
Alden Torres
ff300ed224
some cleanup and refactor in torrent_info code ( #3054 )
2018-05-23 10:39:55 +02:00
arvidn
77191a3820
fix hidden attribute in file class
2018-05-23 10:39:10 +02:00
arvidn
ed8fffc1a6
set the hidden attribute when creating the part file
2018-05-23 10:39:10 +02:00
arvidn
55a0a6e0df
fix production asserts
2018-05-22 12:12:33 +02:00
Steven Siloti
92a7188163
only start a new accept request on new listen sockets
...
Existing sockets already have an outstanding accept.
Also fix mapping new listen sockets when re-mapping is not requested.
2018-05-22 11:06:33 +02:00
arvidn
1a66a8b285
merged RC_1_1 into master
2018-05-20 12:08:46 +02:00
arvidn
c986d93913
fix properly ignoring failure to get local endpoint of a socket while printing an error
2018-05-20 10:47:46 +02:00
Steven Siloti
54f00ce09d
don't change state to downloading if the torrent is finished
...
Move the transition to downloading after the torrent has been checked
for being finished. This prevents a spurious state_changed_alert when
adding a torrent which is already completed.
Also move the posting of the torrent_checked_alert to maintain the
historical ordering of that alert with respect to the transition out of
checking_resume_data.
2018-05-20 08:45:24 +02:00
Steven Siloti
9a48ef761e
fix address of point-to-point interfaces ( #3039 )
2018-05-17 00:54:46 +02:00
Alden Torres
7621be6df1
fixed signed/unsigned warnings with latest version of Xcode clang ( #3032 )
2018-05-16 16:06:33 +02:00
Alden Torres
a14d595eac
minor code cleanup in torrent.cpp
2018-05-16 16:05:15 +02:00
Alden Torres
a7b2026ef8
minor code refactor in ip_filter code
2018-05-14 23:58:01 +02:00
Arvid Norberg
f4d7ff592e
merged RC_1_1 into master
2018-05-14 09:50:10 +02:00
Arvid Norberg
ccdfd7383e
move export.hpp into aux_ folder. put assert symbols in libtorrent namespace
2018-05-14 09:09:01 +02:00
Arvid Norberg
17055ad4d1
don't enable reuse-address for UDP sockets, as it will always succeed and not get any incoming packets. It's better to detect a port conflict and try a different port. Also implement port-retry logic for the UDP sockets
2018-05-13 22:36:02 +02:00
Steven Siloti
243353a144
account for partially downloaded pieces when announcing as a seed
2018-05-13 22:35:04 +02:00
arvidn
fe612ca167
replace the TORRENT_CFG ABI check with inline namespaces around the symbol that can change ABI based on build configuration options
2018-05-13 19:25:17 +02:00
arvidn
9ca12d6db5
restore aspects of the previous behavior of force-proxy. Instead of not opening any TCP listen sockets at all, open them but reject any incoming connection. This is because in RC_1_1, the UDP and TCP sockets are tied in subtle and unintuitive ways. This is much cleaner in the next major release and this patch will not need to be merged
2018-05-13 12:31:00 +02:00
arvidn
8bb1cd2b46
merged RC_1_1 into master
2018-05-12 15:37:53 +02:00
d-komarov
f052d1ca40
Fix bandwidth allocation ( #2810 )
...
Don't allow peer connection to ask quota from bandwidth manager if send buffer is empty.
Remove undefined member function
Update download rate multiplier
2018-05-12 13:53:03 +02:00
arvidn
ddd1168296
don't attempt to make uTP connections if we don't have any outgoing UDP sockets
2018-05-12 13:34:58 +02:00
arvidn
4d17e0132e
fix empty outgoing interfaces for UDP sockets
2018-05-12 13:34:58 +02:00
Steven Siloti
8fdba2aa39
don't specialize standard type trait is_integral
...
Concerning type traits, the C++ standard states: "The behavior of a program
that adds specializations for any of the templates defined in this subclause is
undefined unless otherwise specified."
There is no exception for is_integral.
2018-05-10 19:06:18 +02:00
arvidn
299a545648
add test for suggests- and seed mode combined
2018-05-10 17:40:23 +02:00
Steven Siloti
96d215a32a
only allow pinged nodes into the routing table ( #3006 )
...
This is an attempt to prevent bogus nodes entering the routing table and
being propogated to other nodes.
2018-05-08 12:47:29 +02:00
Eugene Shalygin
81fd09775c
Fix compilation with GCC 8
2018-05-07 13:33:18 +02:00
Arvid Norberg
4b368e1cfc
merged RC_1_1 into master
2018-05-02 01:57:41 +02:00
arvidn
8808eb7cdd
introduce a recursive mutex to protect the alert_manager, and hold the mutex while calling user callbacks and plugin hooks. This is required to ensure the underlying storage for alert allocations (in the stack allocators) is synchronized with the thread that may be accessing it
2018-05-01 23:17:51 +02:00
Alden Torres
8da635d1f5
minor code cleanup, more use of const
2018-05-01 23:03:29 +02:00
Alden Torres
377e800e72
fixed conversion warnings in 32 bits
2018-04-30 23:09:00 +02:00
Steven Siloti
ec18742f8e
save the number of idle threads locally in disk_io_thread_pool::thread_active
...
This cuts down on the number of atomic loads while also being more correct.
Before it was possible for m_num_idle_threads to increase before its value
could be stored in m_min_idle_threads.
2018-04-29 16:31:18 +02:00
arvidn
8621477239
merged RC_1_1 into master
2018-04-28 14:36:24 +02:00
Steven Siloti
f5e33932d2
fix use after free in flush_range and flush_iovec
...
Calling blocks_flushed can cause the piece entry to be freed so its
callers need to be aware of that and avoid dereferencing the pointer if
the entry is freed.
2018-04-27 16:15:19 +02:00
Arvid Norberg
366b7983d1
fix typo with bind_outgoing_socket~
2018-04-26 19:50:25 -04:00
pavel.pimenov
2a97ec6e0e
Windows: Fix build Visual C++ ARM/ARM64
2018-04-25 16:07:47 -04:00
Alden Torres
0ec66e9024
fix disk_io_thread::do_check_fastresume storage initialize logic from RC_1_1 merge
2018-04-25 16:04:20 -04:00
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