Commit Graph

5875 Commits

Author SHA1 Message Date
arvidn c9043dec53 force proxy no longer disables the DHT 2018-08-20 08:24:31 +02:00
arvidn 6620b6e774 dial back the connect boost a bit from recent update 2018-08-13 19:17:01 +02:00
d_komarov 0bcf6cef23 Fix exporting files
To avoid overwriting existing files, before exporting anything from a
parts file, check whether it contains valid data.
2018-08-10 20:21:29 +02:00
arvidn 6d2541f131 improve connect-boost feature, to make new torrents quickly connect peers 2018-08-09 20:12:56 +02:00
Arvid Norberg 0a5b3c1bb0 update documentation for save_resume_data() and stop_when_ready() 2018-08-09 00:57:21 +02:00
arvidn 70d64327fd bump checking_mem_usage to be higher than the default in the high_performance_seed preset 2018-08-02 23:15:51 +02:00
arvidn 19df645012 apply piece priorities immediately, even though file priority updares are async. save both file- and piece priorities in fast resume. when loading, apply file prios first, then piece prios 2018-07-29 21:53:01 +02:00
Arvid Norberg 2f56fa6c3e bump version to 1.1.9 2018-07-20 13:06:12 +02:00
arvidn 1ebc5f9ef2 remove special handling of uTP peers 2018-07-20 07:47:08 +02:00
Arvid Norberg 5bb5ba145f fix exporting files from partfile while seeding 2018-07-18 10:56:24 +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
Andrei Kurushin 7a34b27499 fix Windows "file::preadv" emulation EOF handling 2018-07-12 23:54:34 +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 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
Arvid Norberg b60912569f back-port resume data validation fixes 2018-07-08 17:31:29 +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
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
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 4576723090 bump version to 1.1.8 2018-06-25 12:25:11 +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
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 0c147164bc introduce a fast-path for the hash disk job 2018-06-20 01:00:16 +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
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 c55bc7dd42 improve error handling of failing to change file priority 2018-05-31 00:47:17 +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 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 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
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 243353a144 account for partially downloaded pieces when announcing as a seed 2018-05-13 22:35:04 +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
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 299a545648 add test for suggests- and seed mode combined 2018-05-10 17:40:23 +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
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
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
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 9cd0ae67e7 another boost-1.67 build fix 2018-04-13 14:43: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