Commit graph

2004 commits

Author SHA1 Message Date
Vladimir Golovnev (Glassez)
b335114219
Use better method to set bit 2022-12-14 10:41:04 +03:00
Vladimir Golovnev (Glassez)
998b08f5d8
Set metadata asynchronously 2022-12-14 10:41:04 +03:00
Vladimir Golovnev (Glassez)
991c30943a
Allow to fetch data asynchronously 2022-12-14 10:41:04 +03:00
Vladimir Golovnev
ac3ad17a9e
Ensure thread is stopped before deleting QThread
PR #18037.
2022-12-08 08:37:14 +03:00
Vladimir Golovnev
1b2ff0f6f8
Handle tracker status updates asynchronously
* Add a helper for performing jobs in Session context
* Handle tracker status updates asynchronously

PR #18010.
2022-11-30 09:54:30 +03:00
Vladimir Golovnev
a31755bbc8
Switch SQLite to use WAL journaling mode
PR #18048.
2022-11-30 09:50:26 +03:00
Vladimir Golovnev
d82edb2838
Bump to 4.6.0alpha1 2022-11-21 22:54:37 +03:00
Vladimir Golovnev
fda6c9a3d9
Prevent object from being used after destruction
PR #18031.
2022-11-20 15:03:36 +03:00
Vladimir Golovnev
1cee69da6c
Don't miss to store metadata of new torrent
PR #18033.
2022-11-19 13:33:38 +03:00
Vladimir Golovnev (Glassez)
3563bad5fc
Revamp implementation of port forwarder 2022-11-14 08:28:35 +03:00
Vladimir Golovnev (Glassez)
1f3f96f7aa
Set metadata asynchronously 2022-11-14 08:27:01 +03:00
Vladimir Golovnev (Glassez)
7022adb89b
Change current IP filter asynchronously 2022-11-14 08:26:49 +03:00
Vladimir Golovnev (Glassez)
bac57de5f5
Update listening status using native session extension 2022-11-14 08:22:12 +03:00
Vladimir Golovnev
bdd56a52d3
Destroy object within appropriate thread
PR #18008.
2022-11-13 08:28:33 +03:00
Vladimir Golovnev
dcdbd02102
Delete database file only after it is released
PR #18005.
2022-11-13 08:27:48 +03:00
Vladimir Golovnev
b68c4e2106
Save correct resume data when added new torrent
PR #18003.
2022-11-13 08:26:25 +03:00
Vladimir Golovnev
f9eefe866c
Merge pull request #17992 from glassez/preloading-magnet
Improve handling of preloading metadata.
This also allows to avoid blocking calls when performing some actions.
2022-11-10 19:22:20 +03:00
Chocobo1
d328eeb5be
Merge pull request #17980 from Chocobo1/model
Reserve space before appending elements
2022-11-10 17:24:17 +08:00
Chocobo1
d90ea0d3be
Move increment out of loop 2022-11-10 17:18:28 +08:00
Vladimir Golovnev
6c9c40fd7c
Avoid blocking call when changing libtorrent session settings
We don't really need to get currently used settings pack in order to apply changes to session settings. It is enough to apply settings pack that contains only updated settings.

PR #17989.
2022-11-09 08:02:34 +03:00
Chocobo1
93429840c8
Fix typos 2022-11-08 13:50:01 +08:00
Vladimir Golovnev (Glassez)
6aee7f95b7
Add torrent for preloading magnet asynchronously 2022-11-08 08:29:16 +03:00
Vladimir Golovnev (Glassez)
0b70ccf9e9
Cache torrent handles of preloading magnets 2022-11-08 08:29:15 +03:00
Vladimir Golovnev (Glassez)
da586828be
Don't perform unnecessary actions with preloading magnets 2022-11-08 08:29:10 +03:00
Vladimir Golovnev
2e4431f0b8
Save torrents queue w/o blocking calls
PR #17988.
2022-11-08 07:00:40 +03:00
Chocobo1
f6735401f4
Add port forwarding option for embedded tracker
Closes #17781.
PR #17981.
2022-11-07 11:32:11 +08:00
Vladimir Golovnev
c80238d66f
Don't use extra variable to distinguish restored torrents
PR #17984.
2022-11-06 14:24:49 +03:00
Hanabishi
6a560016dd
Implement Peer ID Client column for Peers tab
PR #17940.
2022-11-06 12:21:31 +08:00
Chocobo1
99b7663fa9
Revise interface of port forwarder
This eases the usage of port forwarder as the caller code doesn't need
to store previous used port and now can rely on port forwarder doing
all the hard work.

PR #17967.
2022-11-05 11:33:21 +08:00
Chocobo1
be0f34a69e
Merge pull request #17900 from Chocobo1/alerts
Handle all types of alerts on shutdown
2022-11-03 12:29:38 +08:00
Chocobo1
3a2e73cc94
Avoid out-of-bounds access
This happens when the `index` is a negative number.
Added `Q_ASSERT()` to catch coding errors at debug run time.

PR #17953.
2022-10-31 12:34:20 +08:00
xavier2k6
3ee0457cfa
Raise minimum libtorrent versions to 1.2.18/2.0.8
PR #17954.
2022-10-30 08:30:31 +03:00
Vladimir Golovnev
e19173c1f3
Prevent new torrent from saving resume data twice
PR #17951.
2022-10-30 08:28:51 +03:00
Vladimir Golovnev
4a5d2e2558
Correctly initialize torrent stop condition
PR #17950.
2022-10-30 08:28:13 +03:00
Vladimir Golovnev
c29a6079bf
Don't forget to create stop_condition column
PR #17935.
2022-10-26 18:25:52 +03:00
Vladimir Golovnev
bb2caabd61
Correctly destroy startup resume data storage
PR #17930.
2022-10-25 11:37:51 +03:00
Chocobo1
dfdaa706bd
Move code around 2022-10-24 00:34:25 +08:00
Chocobo1
1a782a9362
Avoid redundant lookups in port forwarder 2022-10-24 00:34:25 +08:00
Chocobo1
5f2d807861
Ensure ongoing storage moving job will be completed when shutting down
Discussion: https://github.com/qbittorrent/qBittorrent/pull/17885#issuecomment-1282467041
2022-10-23 17:55:58 +08:00
Nathan Lewis
f2dd1e6456
Add a "Use proxy for hostname lookup" option
Add a UI option for "Use proxy for hostname lookup" option and plumb
it into libtorrent's settings_pack.proxy_hostnames option.  This is
available for SOCKS5 and HTTP proxies, and defaults to true, which
is the previous functionality.  Hostname lookups can be forced to be
local by unchecking this option, which can aid compatibility with
certain non-compliant proxy servers.

Closes #17902.
PR #17904.

Co-authored-by: Nathan Lewis <saturn@saturn49.dyndns.org>
2022-10-23 15:31:02 +08:00
Vladimir Golovnev
05b7194bf7
Correctly set "stop condition" on force recheck invoked
PR #17915.
Closes #17913.
2022-10-22 17:43:17 +03:00
Maksim Derbasov
597444c527
Make GeoIPDatabase interface safer
PR #17899.
2022-10-21 13:31:37 +08:00
Chocobo1
106adf135c
Handle all types of alerts on shutdown
There might be alerts already queued in buffer waiting to be handled at
the time of pausing the session, so don't skip over them.
2022-10-18 14:31:57 +08:00
Chocobo1
a325ab8d6e
Delay saving session statistics
Pausing the libtorrent session should be scheduled before this.
2022-10-17 13:53:55 +08:00
Chocobo1
c94152c47c
Reuse alert dispatcher
Instead of using a specific alert handler in `SessionImpl::saveResumeData()`, reuse the generic
one.
2022-10-17 13:53:54 +08:00
Chocobo1
a44bca3f07
Revise "save resume data" handling on shutdown
When shutting down, instead of waiting for all types of alert from
libtorrent, now it only waits for specific alert types. This potentially
help shorten the shutdown waiting time.
2022-10-17 13:53:27 +08:00
tristanleboss
e028d8085b
Add a "Moving" status filter
Because sometime (when your save and download path are on different drives, when your disk drive is super busy, ...) move operations can stack up, I add this "Moving" status filter so you can see in a blink of the eye which torrents are in a move state.

PR #17810.
2022-10-14 13:12:51 +08:00
Vladimir Golovnev
4f0990dc29
Use 'fail if exist' strategy on automatic move
Prevent existing files overwriting when torrent is moved automatically (e.g. when moved from incomplete to final save path).

PR #17855.
2022-10-11 10:05:21 +03:00
Vladimir Golovnev
67357e9964
Allow to set torrent stop condition
PR #17814.

Closes #17792.
Closes #929.

(Actually it should close all issues about lack of ability to stop torrent after metadata downloaded or after files are initially checked.)

Also makes explicit the temporary start of the torrent in the case when recheck of the stopped torrent is performed.
2022-10-09 16:07:16 +03:00
Chocobo1
1f799689ed
Support 'file exists' situation
The lt::status_t::file_exist is returned when lt::move_flags_t::fail_if_exist is used, which means the whole move operation failed. So hanlde this condition correctly (even if the fail_if_exist isn't used in the code base currently).

PR #17853.
2022-10-09 13:47:52 +08:00
tristanleboss
a71d7e6557
Add infohash and download path columns
PR #17799.
2022-10-08 11:43:52 +08:00
vlakoff
ad59eb4dfc
Revert "Consider brackets within wildcard as regular characters"
The implementation appeared to be broken.

This reverts #16965.
PR #17820.
2022-10-05 12:43:43 +08:00
Vladimir Golovnev
e7370d1a0f
Don't pollute move queue by torrents w/o metadata
There's really nothing to move if the torrent still doesn't have metadata.
Additionally, such torrents in the queue can lead to unexpected behavior
when reloading the torrent after metadata is received.

PR #17823.
2022-10-04 19:41:36 +03:00
Vladimir Golovnev
616057a433
Improve session statistics handling
PR #17779.
2022-09-29 06:49:34 +03:00
Vladimir Golovnev
0a4ee60ea0
Avoid blocking call when save resume data
PR #17755.
2022-09-25 16:40:16 +03:00
sledgehammer999
5e4a94e6b6
Bump to 4.5.0beta1 2022-09-18 20:13:29 +03:00
Chocobo1
b28704a6ec
Merge pull request #17725 from Chocobo1/downloadsDone
Clean up 'recursive download' related code
2022-09-16 12:07:36 +08:00
Chocobo1
f8a2fbc4c5
Clean up 'recursive download' related code
Don't load .torrent files too early, otherwise qbt might emit a dubious error log message if the
.torrent file is invalid.
2022-09-15 00:15:53 +08:00
Chocobo1
80759f9e69
Reorder operations in 'torrent finished' handler
Avoid redundant data fetch.
Remove debug messages.
2022-09-15 00:12:11 +08:00
Chocobo1
e692a191ed
Revise 'Add trackers' dialog
* Now it allow user to add tracker to different tier.
* The downloaded trackers are now displayed as is (without modifying).
* Now the dialog remember dialog size and last used URL.

Closes #17692.
2022-09-14 01:20:30 +08:00
Chocobo1
851374e517
Rename function 2022-09-07 14:11:23 +08:00
Chocobo1
4094a4c448
Simplify functions 2022-09-07 14:11:02 +08:00
Vladimir Golovnev
5cf6b1cbde
Handle more torrent conflicts
PR #17668.
This is a continuation of #17576.
Handles the case when you add hybrid torrent by v1-only magnet link and this torrent is already known by its full hybrid info hash (i.e. by both v1 and v2 info hashes).
2022-09-05 06:22:42 +03:00
Vladimir Golovnev
4318de6dc5
Add ability to run external program on torrent added
PR #17646.
2022-09-04 07:51:50 +03:00
Vladimir Golovnev
ca897a8a35
Cache download/upload limit values
PR #17640.
2022-09-01 06:54:51 +03:00
Vladimir Golovnev
77dd8bd27b
Parse torrent info separately from resume data
PR #17639.
2022-09-01 06:54:12 +03:00
Vladimir Golovnev
fe34749cfe
Proactively append extension to incomplete files
PR #17631.
2022-09-01 06:53:29 +03:00
Vladimir Golovnev
794a92f911
Make qBittorrent compatible with libtorrent master
PR #17604.
2022-08-28 11:38:28 +03:00
Chocobo1
f6e2715f4a
Apply forward declaration
Follow up 525692759d.
PR #17621.
2022-08-28 13:25:38 +08:00
Vladimir Golovnev
525692759d
Split Session class into interface/implementation parts
PR #17579.
2022-08-27 08:01:24 +03:00
Vladimir Golovnev
7527343629
Handle some torrent conflicts
PR #17576.
2022-08-23 07:47:20 +03:00
Chocobo1
d7d1a90de6
Fix wrong parent path 2022-08-14 13:31:21 +08:00
Chocobo1
16482c507b
Fix drive letter validness check 2022-08-14 13:31:21 +08:00
Chocobo1
5abd72d42a
Add comments about "UNC path" support 2022-08-12 12:56:58 +08:00
Chocobo1
2fa5ad982d
Improve absolute/relative path detection 2022-08-12 12:56:57 +08:00
Chocobo1
43df7d0cd4
Improve path validness test 2022-08-12 12:56:56 +08:00
xavier2k6
3f94a68e62
Sync nonstd/expected with upstream
* Used commit: `95b9cb015fa17baa749c2b396b335906e1596a9e` (Release v0.6.2)
* Source: https://github.com/martinmoene/expected-lite/releases
PR #17508.
2022-08-09 11:22:45 +08:00
Vladimir Golovnev
7f40602da9
Fill in initial data in add_torrent_alert handler
libtorrent < 2.0.7 has a bug that add_torrent_alert is posted too early
(before torrent is fully initialized and torrent extensions are created)
so we have to fill initial torrent data in add_torrent_alert handler.

PR #17491.
2022-08-06 06:09:35 +03:00
Chocobo1
33e6ca6778
Redesign Version class
PR #17484.
2022-08-06 11:06:16 +08:00
summer
54b50c3a8a
Do not inhibit system sleep/auto shutdown for torrents stuck at downloading metadata
PR #17481.
2022-08-04 13:10:58 +08:00
Vladimir Golovnev
e24aaa4ce1
Show startup progress dialog
PR #17389.
2022-08-03 07:14:26 +03:00
Chocobo1
aed492b881
Merge pull request #17471 from Chocobo1/cmake
Improve constructor of Version class
2022-08-02 13:50:56 +08:00
Chocobo1
a4c2363f43
Improve constructor of Version class
Now we can write `Version<int, 3, 1>(1)` and provide only 1 parameter
instead of all 3 parameters at once at the constructor. Note that for
this instance of `Version` 3 numbers were specified but only 1 is truly
mandatory.

The added code are required to specify conditions of the template
instantiation for the compiler.
2022-08-01 14:53:55 +08:00
Vladimir Golovnev
0056a61db3
Clear RSS parsing error after use
PR #17465.
2022-08-01 08:15:16 +03:00
Vladimir Golovnev
6d1573f901
Prevent multiple session refreshes from being enqueued 2022-08-01 08:14:09 +03:00
Vladimir Golovnev
1c0479a795
When duplicate torrent is added set metadata to existing one
PR #17454. 
Closes #907.
2022-07-31 08:53:26 +03:00
Chocobo1
27e1a8ad80
Merge pull request #17453 from Chocobo1/i18n
Fix empty string parameter was omitted
2022-07-30 14:30:12 +08:00
Chocobo1
0802b6d506
Fix empty string parameter was omitted
`QProcess::splitCommand()` will omit empty strings like `""` so provide
our own replacement.

Closes #13124.
2022-07-30 00:17:31 +08:00
Vladimir Golovnev
29f8b4b786
Don't merge trackers by default
PR #17446.
2022-07-29 15:40:40 +03:00
brvphoenix
b98e7cb69f
Fix reply data can't be decompressed correctly
If the "Accept-Encoding" is not manually specified, it will be
automatically set to the supported encodings by QT and the reply data
will also be automatically decompressed in this case. Setting
"Accept-Encoding" manually will disable the "autodecompress" feature
before QT 6.3.0. Although QT 6.3.x has different behaviors, let QT
specify the "Accept-Encoding" and we will always obtain the decompressed
data.

The macro "QT_NO_COMPRESS" defined when QT is compiled will disable
the zlib support. We can manually address this exceptions.

PR #17438.
2022-07-29 11:03:21 +08:00
summer
2071ec0c96
Fix peer count issue when tracker responds with zero figure
Sometimes tracker may respond with 0 for num_complete and num_incomplete and we should display that instead of deducing the peer count from peer list. We should only fallback to peer list if tracker does not respond with any information. In such cases num_incomplete and num_complete is set to -1 by libtorrent.

PR #17432.
2022-07-27 13:09:06 +08:00
Chocobo1
50b01ed45d
Revise function for checking "same file" 2022-07-25 01:18:37 +08:00
Chocobo1
727d20cc92
Simplify implementation
This also enable each platform to provide its own optimal implementation of it.
2022-07-23 22:41:26 +08:00
Dmitry Vodopyanov
f20f479a4b
Improve sender field in mail notifications
Problem statement: user sees its email address in email notification,
while it is better to have sender field app-personalized, like it did
in Nextcloud: they send notifications from user's email address and
add alias 'Nextcloud' to it.

This patch adds alias 'qBittorrent' to qBittorrent email notifications,
so user sees more user-friendly email notification.

PR #17374.
2022-07-18 13:22:30 +08:00
Chocobo1
e95066a37c
Merge pull request #17367 from Chocobo1/pr_17005
Split the OS cache settings into Disk IO read/write modes
2022-07-17 16:14:58 +08:00
Chocobo1
e281b667c6
Properly release settings class before further operations
Fix up d3e7e8a630.

PR #17376.
2022-07-17 12:41:18 +08:00
Chocobo1
56bb379024
Add workaround for payload upload/download rate
The graphs are showing 0 for both payload upload & download rate but
torrent statistics aren't, so suppress it manually.
The workaround only applies to paused state for now.

Closes #17294.
2022-07-15 12:20:09 +08:00
Chocobo1
bafe4e909c
Use switch() statement 2022-07-15 12:20:09 +08:00
Chocobo1
b6b0b54cdb
Rename variable 2022-07-15 12:17:39 +08:00
summer
5b730ffb72
Split the OS cache settings into Disk IO read/write modes
Co-authored-by: Chocobo1 <Chocobo1@users.noreply.github.com>
2022-07-14 18:37:38 +08:00