Commit graph

865 commits

Author SHA1 Message Date
Vladimir Golovnev (Glassez)
561b597031
Improve "info hash" handling
Define "torrent ID" concept, which is either a SHA1 hash for torrents of version 1,
or a SHA256 hash (truncated to SHA1 hash length) for torrents of version 2.
Add support for native libtorrent2 info hashes.
2021-03-12 12:43:14 +03:00
Vladimir Golovnev (Glassez)
6d6908e625
Initialize torrent status from add torrent params 2021-03-11 20:01:34 +03:00
Vladimir Golovnev
4da4fb0676
Merge pull request #14479 from glassez/trackerentry
Improve tracker entries handling
2021-03-11 18:51:19 +03:00
Vladimir Golovnev (Glassez)
7a8c05dc7c
Improve tracker entries handling 2021-03-10 19:54:34 +03:00
Mike Tzou
f3435c5e35
Merge pull request #14493 from Chocobo1/tos
Expose ToS setting from libtorrent
2021-03-08 10:24:42 +08:00
Vladimir Golovnev
6b3c6c12ff
Merge pull request #14466 from glassez/sha1hash
Improve "info hash" handling
2021-03-07 13:25:01 +03:00
Chocobo1
5161758193
Expose ToS setting from libtorrent
Closes #14420.
2021-03-07 15:32:07 +08:00
Vladimir Golovnev (Glassez)
bea32cfe38
Define template for classes that represent SHA hashes 2021-03-06 12:36:08 +03:00
Vladimir Golovnev (Glassez)
8cfd803222
Drop implicit conversions between InfoHash and QString 2021-03-06 12:35:42 +03:00
Chocobo1
f00f552369
Properly stop torrent creation if aborted
Closes #11346.
2021-03-04 14:54:02 +08:00
Vladimir Golovnev
a2b0531d5f
Merge pull request #14189 from glassez/libtorrent-1.2.12
Raise minimum libtorrent version to 1.2.12 (2.0.2)
2021-03-01 20:43:28 +03:00
Chocobo1
e46c88580a
Revise getter function for torrrent queue position
This addresses https://github.com/qbittorrent/qBittorrent/pull/14335#issuecomment-774667836

The WebAPI is not affected as a workaround is added.
2021-02-08 14:24:16 +08:00
Mike Tzou
e6033c952e
Merge pull request #14351 from Chocobo1/avail
Show proper string when torrent availability is not available
2021-02-08 12:12:22 +08:00
Vladimir Golovnev
3dfd0ff3b3
Merge pull request #14354 from glassez/missing-files
Improve handling of "missing files" torrents
2021-02-08 06:34:15 +03:00
Chocobo1
6a45919b25
Clean up coding style 2021-02-07 16:08:20 +08:00
Vladimir Golovnev (Glassez)
c3f02d833c
Restart "missing files" torrents after changing location 2021-02-06 14:59:51 +03:00
Vladimir Golovnev (Glassez)
e273ac3a0d
Allow "missing files" torrents to save more resume data 2021-02-06 14:30:33 +03:00
Vladimir Golovnev (Glassez)
459d02abc8
Allow change-case-only file renaming on Windows 2021-02-06 11:33:46 +03:00
dyumin
12d396ffc5 Treat errored torrents as finished 2021-01-29 12:36:25 +03:00
an0n666
24d7d599f1
Validate HTTPS Tracker Certificate by default 2021-01-20 13:33:10 +06:00
Vladimir Golovnev (Glassez)
ae29e8bbab
Drop extension from generated content folder name
Try to detect whether generated content folder name contains extension
and drop it to avoid possible conflicts between file/folder names.
2021-01-18 10:37:19 +03:00
Vladimir Golovnev (Glassez)
f9e286123f
Raise minimum libtorrent version to 1.2.12 2021-01-10 14:38:58 +03:00
Vladimir Golovnev (Glassez)
0b4fef19f6
Remove redundant suffix from TorrentHandle class
Originally, it was just a wrapper for libtorrent::torrent_handle class, so it mimicked its name.
It was then transformed into a more complex aggregate, but the name was retained (just by inertia).
Unlike libtorrent::torrent_handle class in whose name "handle" means the pattern used,
it does not matter for qBittorrent classes and just eats up space in the source code.
2021-01-06 16:28:17 +03:00
Mike Tzou
b79a1b5755
Merge pull request #14145 from Chocobo1/define
Generate version header when configuring project
2021-01-06 11:38:55 +08:00
Vladimir Golovnev
8771e1a339
Merge pull request #14138 from glassez/add-torrent
Use single parameter to accept torrent source
2021-01-05 09:17:08 +03:00
Vladimir Golovnev (Glassez)
531ae501ad
Use std::optional<bool> instead of custom TriStateBool 2021-01-04 23:10:24 +03:00
Vladimir Golovnev (Glassez)
4429a16ca8
Use std::optional instead of boost::optional 2021-01-04 23:10:03 +03:00
Chocobo1
c669401767
Generate version header when configuring project
The basic idea is we create a version header template at
"src/base/version.h.in" and the build systems are expected to replace
strings that are enclosed with @ symbols and generate
"src/base/version.h" for other source files to consume/include.
2021-01-04 22:28:41 +08:00
Vladimir Golovnev (Glassez)
ee5fe424e8
Use single parameter to accept torrent source 2021-01-03 17:01:20 +03:00
Mike Tzou
586bdc0567
Merge pull request #14121 from Chocobo1/settingsStorage
Improve load data behavior of SettingsStorage class
2021-01-03 13:19:53 +08:00
Vladimir Golovnev
4bb3d13921
Merge pull request #14123 from glassez/restart-missing-files
Don't re-check "missing files" torrents when re-start
2021-01-02 15:20:50 +03:00
Vladimir Golovnev
7c02630186
Merge pull request #14116 from glassez/drop-move-notify
Drop notification about move storage finished
2021-01-02 10:34:09 +03:00
Chocobo1
be5af2796d
Revise SettingsStorage store/load value interface 2021-01-02 12:48:26 +08:00
Vladimir Golovnev (Glassez)
b2199202ab
Reload "missing files" torrent instead of re-checking 2021-01-01 16:16:52 +03:00
Vladimir Golovnev (Glassez)
06105072f9
Extract torrent reloading logic into separate method 2021-01-01 16:08:01 +03:00
Vladimir Golovnev (Glassez)
df2bbe129d
Drop notification about move storage failed 2020-12-31 21:53:43 +03:00
Vladimir Golovnev (Glassez)
f7cae610a4
Drop notification about move storage finished 2020-12-31 21:49:18 +03:00
Chocobo1
d70b893852
Bump project requirement to C++17 2020-12-31 13:28:48 +08:00
Mike Tzou
a579b4a519
Merge pull request #14085 from Chocobo1/settingvalue
Add a thin layer around SettingsStorage class
2020-12-31 10:46:32 +08:00
Vladimir Golovnev
348109a1f9
Merge pull request #13995 from glassez/rename-files
Improve content file/folder names handling
2020-12-29 22:27:58 +03:00
Chocobo1
0b0597be0c
Add a thin layer around SettingsStorage class
This new layer would be handy for saving GUI widget states as they don't
need the value cached and they store/load rarely.
2020-12-30 00:10:22 +08:00
Vladimir Golovnev (Glassez)
4453e7fcdd
Improve content file/folder names handling
Move files/folders renaming functions to core classes.
Query file/folder for renaming by its current path.
Add ability to rename content folders from WebAPI/WebUI.
2020-12-28 21:18:28 +03:00
Mike Tzou
60d65d8137
Merge pull request #13885 from thalieht/torrentOptionsDialog
Rework global speed limit dialog and introduce torrent options dialog
2020-12-28 11:34:38 +08:00
Vladimir Golovnev
70b242f190
Merge pull request #13955 from glassez/content-policy
Improve content root folder handling
2020-12-26 14:44:51 +03:00
thalieht
8db4bde15d Group several torrent options into one dialog
Speed limits, share limits and the new options to disable DHT, PeX, LSD per torrent
2020-12-25 20:37:43 +02:00
thalieht
fbb8f0cbf5 Save fastresume when setting torrent speed limits 2020-12-25 20:37:43 +02:00
Chocobo1
4180db601d
Use a helper function to look up stat indexes 2020-12-24 23:20:21 +08:00
Chocobo1
90a1ea4281
Don't use removed stat metric in libtorrent 2.0
For now, the metric is not entirely removed due to WebAPI still needs to
access it.
2020-12-24 12:04:14 +08:00
Chocobo1
0ebd864db9
Initialize stat indices to -1
When the index is initialized it will be set to a number >= 0, so we use
-1 to denote its uninitialized status.
2020-12-24 11:30:48 +08:00
Vladimir Golovnev (Glassez)
1d5dc283fe
Allow to add root folder to torrent content 2020-12-23 13:07:33 +03:00
Vladimir Golovnev (Glassez)
f6d1fea9b7
Fix bug of "move storage job" can be performed multiple times 2020-12-21 20:11:01 +03:00
Vladimir Golovnev (Glassez)
77555cd5c2
Improve torrent name handling 2020-12-15 10:18:39 +03:00
Vladimir Golovnev
c01d28a471
Merge pull request #13948 from FranciscoPombal/pragmatism
Use #pragma once instead of include guards
2020-12-14 13:51:02 +03:00
Chocobo1
20ae89c2a1
Add support for allow_idna option
Upstream PR: https://github.com/arvidn/libtorrent/pull/5316
2020-12-13 12:12:24 +08:00
Chocobo1
0baa23f553
Update "HTTPS tracker validation" enablement conditional
https://github.com/arvidn/libtorrent/pull/5313
2020-12-13 12:12:24 +08:00
Mike Tzou
10fbb6a2a8
Merge pull request #13953 from Chocobo1/cmp
Migrate away from deprecated QVariant comparison operators
2020-12-13 11:49:52 +08:00
FranciscoPombal
6152b83405 Use #pragma once instead of include guards 2020-12-12 19:41:32 +00:00
Vladimir Golovnev (Glassez)
5f94238d23
Fix bug of torrents don't save "stopped" state 2020-12-11 17:33:37 +03:00
Chocobo1
5ba6a5fca1
Add operator< for InfoHash class 2020-12-10 20:11:15 +08:00
Chocobo1
498da509db
Use Qt provided forward declaration header 2020-12-09 18:21:02 +08:00
Mike Tzou
d484c0e7ce
Merge pull request #13912 from Chocobo1/infohash
Use the correct type when referring to info hash
2020-12-08 20:53:12 +08:00
Vladimir Golovnev
5c1c561d7d
Merge pull request #13905 from glassez/handle-metadata
Fix received metadata handling
2020-12-07 08:39:06 +03:00
Chocobo1
9f0429ca6f
Use the correct type when referring to info hash 2020-12-06 22:04:28 +08:00
Vladimir Golovnev
3485ad39d9
Merge pull request #13511 from FranciscoPombal/bump_versions
Bump minimum dependency versions
2020-12-05 13:27:21 +03:00
Vladimir Golovnev (Glassez)
4e04cd27c9
Fix received metadata handling 2020-12-05 10:03:27 +03:00
FranciscoPombal
7e4b428a3e Fix method invocation on Qt < 5.10
Fixup 0c3fe54b0b
2020-12-04 22:46:49 +00:00
Vladimir Golovnev
2f6ed86c78 Drop support for building with libtorrent < 1.2.11
Co-authored-by: Vladimir Golovnev <glassez@yandex.ru>
2020-12-04 14:30:12 +00:00
Vladimir Golovnev (Glassez)
a93b675cb8
Search for existing files in separate thread 2020-12-03 07:58:34 +03:00
Vladimir Golovnev (Glassez)
9497300a4a
Don't rewrite TorrentInfo instance if it's valid 2020-12-01 08:15:26 +03:00
Vladimir Golovnev (Glassez)
acab62e345
Properly handle "Append extension" option changing 2020-12-01 08:15:25 +03:00
Vladimir Golovnev (Glassez)
0e8feed2f2
Clean up metadata downloading code 2020-12-01 08:15:12 +03:00
sledgehammer999
82716d8014
Merge pull request #13871 from sledgehammer999/magnet_delete
Don't try to remove folders for a torrent without metadata
2020-12-01 02:14:51 +02:00
sledgehammer999
9721acbf63
Don't try to remove folders for a torrent without metadata 2020-11-29 02:41:47 +02:00
sledgehammer999
be5cb1683b
Fix status of torrents without metadata 2020-11-29 00:32:53 +02:00
Vladimir Golovnev (Glassez)
c41df9ffbd
Improve coding style 2020-11-17 21:02:37 +03:00
Chocobo1
0be2567d97
Don't use deprecated torrent state "allocating"
Closes #13737.
2020-11-12 00:17:42 +08:00
Vladimir Golovnev (Glassez)
85bd0feee0
Handle torrent "paused" state at application level 2020-11-02 10:09:14 +03:00
Chocobo1
7ddd5e9bc3
Remove unused function 2020-11-01 14:25:33 +08:00
NotTsunami
a5f8f1f0f5 Fix mingw64 build error
mingw64 defines interface, so revert back to previous naming scheme

Fixes: 87864531ab
Closes #13649
2020-10-29 18:25:19 -04:00
Vladimir Golovnev
571aaea3e0
Merge pull request #13658 from glassez/recheck
Don't resume "paused" torrents when put into "checking" state by libtorrent
2020-10-28 08:45:35 +03:00
Vladimir Golovnev (Glassez)
80ca7796ca
Fix torrent state calculation 2020-10-27 17:41:40 +03:00
Vladimir Golovnev (Glassez)
9f0edde12b
Don't resume "paused" torrents when checking by libtorrent 2020-10-26 11:08:22 +03:00
Chocobo1
480832318c
Add support for tracker scrape in libtorrent 2.0 2020-10-26 00:37:53 +08:00
Chocobo1
7a3e397949
Migrate away from deprecated functions in libtorrent 2.0 2020-10-26 00:37:53 +08:00
Chocobo1
c95e450b8d
Improve compatibility with libtorrent 2.0
In libtorrent 2.0, the `connection_type` was changed to a flag type and
hence it cannot be used in a switch statement directly. Also our use of
`connection_type` is limited so that a single equality comparison
would cover all of our use cases.
2020-10-26 00:36:59 +08:00
Mike Tzou
172eda5471
Merge pull request #13620 from Chocobo1/qhash
Move qHash helper for libtorrent types to its own file
2020-10-24 12:34:26 +08:00
Chocobo1
3971a12f0e
Remove redundant checking before remove 2020-10-23 12:58:57 +08:00
Chocobo1
70c4eb44fd
Fix class name 2020-10-23 12:58:11 +08:00
Vladimir Golovnev (Glassez)
92c6fc04a8
Prevent resume data to be saved for removed torrent 2020-10-22 20:16:52 +03:00
Chocobo1
71827fe4e6
Move qHash helper for libtorrent types to its own file 2020-10-22 03:12:48 +08:00
Chocobo1
7e258bfe38
Fix typos 2020-10-20 18:56:30 +08:00
Vladimir Golovnev
720c1c8216
Merge pull request #13395 from glassez/disk_io
Implement disk IO thread wrapper
2020-10-17 12:53:25 +03:00
Anton Bershanskiy
b4bfdd6f7a Add option for hashing_threads, use 10 asyc IO threads
Add option for setting lt::settings_pack::hashing_threads
introduced by libtorrent 2.0. It has no effect for earlier
libtorrent versions.
Use 10 async IO threads, as per #11461.
Closes #11461.
2020-10-13 00:58:13 +03:00
Chocobo1
19d77b0881
Add support for creating v2 torrents 2020-10-10 23:21:26 +08:00
Vladimir Golovnev
bad5e1f887
Merge pull request #12086 from FranciscoPombal/code-cleanup
Clean ups
2020-10-09 07:13:18 +03:00
FranciscoPombal
deffdbe881 Change some types (uint -> int) in Session class 2020-10-07 23:26:13 +01:00
FranciscoPombal
87864531ab Clean up in Session class 2020-10-07 23:26:13 +01:00
FranciscoPombal
f502f60f7c Avoid unessary QString allocation 2020-10-07 15:34:26 +01:00
Mike Tzou
2bfaa8229a
Merge pull request #13431 from Chocobo1/namespace
Fix code defects
2020-09-26 11:20:10 +08:00
Chocobo1
ef9765cea1
Remove meaningless const on pointers
This only apply to signals.
2020-09-25 15:13:14 +08:00