Vladimir Golovnev
f27f2c20e0
Add unified class to represent parsed torrent metadata
...
* Add unified class to represent parsed torrent metadata
* Unify startup logic of "Add new torrent dialog"
PR #19301 .
2023-07-21 08:40:16 +03:00
Chocobo1
5a660fc8a9
Expose 'bdecode limits' settings
...
This includes:
* Bdecode depth limit
* Bdecode token limit
2023-07-09 15:36:13 +08:00
Chocobo1
66dfe8545d
Expose 'max torrent file size' setting
2023-07-06 12:45:09 +08:00
Vladimir Golovnev
80c637bf99
Always use the same limits when parse bencoded data
...
PR #19263 .
2023-07-02 11:37:37 +03:00
Chocobo1
79ca2e145f
Don't read unlimited data from files
...
It now guards against reading infinite files such as `/dev/zero`.
And most readings are bound with a (lax) limit.
As a side effect, more checking are done when reading a file and
overall the reading procedure is more robust.
PR #19095 .
2023-06-14 13:38:19 +08:00
Chocobo1
8219b1f695
Use default constructor, destructor
2023-05-06 16:35:12 +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
Vladimir Golovnev
794a92f911
Make qBittorrent compatible with libtorrent master
...
PR #17604 .
2022-08-28 11:38:28 +03:00
Vladimir Golovnev
7e0cd223fd
Revamp tracker entries handling
...
PR #17017 .
2022-05-22 09:09:11 +03:00
Chocobo1
a90ade0446
Add "Export .torrent" action
2022-04-23 15:11:09 +08:00
Vladimir Golovnev
df2d449f9b
Revamp content layout handling
...
Apply content layout only if desired file names aren't provided.
Remove helpers with confusing signatures.
Don't remove root folder twice.
PR #16724 .
Closes #16259 .
2022-04-01 09:35:45 +03:00
Chocobo1
f0dd7b7dae
Use QString literals
...
This patch covers src/app and src/base folders.
Follow up of ab64ee872bd76b9fe27a1814550cab386e20a0d5.
2022-03-11 00:11:30 +08:00
Vladimir Golovnev
dd1bd8ad10
Implement class for handling filesystem paths
...
PR #15915 .
2022-02-08 06:03:48 +03:00
Vladimir Golovnev
a3be239a60
Keep "torrent info" alive while generating .torrent file
...
PR #16018 .
2022-01-11 07:29:42 +03:00
Vladimir Golovnev
84a8158aa2
Correctly track the root folder name change
...
PR #16004 .
2022-01-11 07:24:24 +03:00
Vladimir Golovnev (Glassez)
62b50d1475
Make TorrentInfo immutable
2021-12-19 16:16:16 +03:00
Vladimir Golovnev (Glassez)
78459fcb31
Don't throw exception in TorrentInfo::saveToFile()
2021-10-09 08:54:20 +03:00
Vladimir Golovnev (Glassez)
41fc0fd084
Don't use output parameters for error handling
2021-10-09 08:54:03 +03:00
Vladimir Golovnev
bc71827c01
Improve torrent content handling
...
Hide .pad files.
PR #15468 .
2021-10-02 21:42:58 +03:00
Chocobo1
010d1b5ff8
Merge pull request #15419 from Chocobo1/file
...
Improve error detection when saving files
2021-09-19 13:28:47 +08:00
Chocobo1
21f72baae2
Use QSaveFile wherever applicable
...
expected.hpp was fetched from:
b803e3c07b/include/nonstd/expected.hpp
2021-09-15 21:54:44 +08:00
Chocobo1
2efd4f2a77
Prevent self-assignment in assignment operator
2021-09-09 21:42:46 +08:00
Chocobo1
138c911ef4
Add compile definition to indicate using of libtorrent 2.0 ( #15297 )
...
The compile definition is temporary which will be removed when qbt
ditches libtorrent 1.x.
2021-08-08 13:27:22 +08:00
Vladimir Golovnev (Glassez)
399d3ad85a
Replace QStringRef with QStringView
2021-07-15 10:56:49 +03:00
Vladimir Golovnev (Glassez)
3faa7226e7
Handle exception when torrent file cannot be exported
...
Both `lt::create_torrent` constructor and `lt::create_torrent::generate()`
can throw an exception so we need to handle it to prevent the app from crashing.
2021-06-22 21:36:42 +03:00
Kacper Michajłow
ccb59fbad3
Suppress C4267 conversion warnings ( #13307 )
...
- warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
Caused by mismatch between size_type of std and Qt containers. It is safe to cast to int as all of those containers hold low number of objects.
2021-06-11 08:51:06 +03:00
Vladimir Golovnev (Glassez)
2993fdb169
Improve "Watched folders" feature
...
Make "file system watcher" an application core component
and separate it from its presentation model.
2021-05-19 15:42:41 +03:00
Vladimir Golovnev (Glassez)
f022458383
Raise minimum supported Qt version to 5.12
2021-03-13 15:33:58 +03:00
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)
7a8c05dc7c
Improve tracker entries handling
2021-03-10 19:54:34 +03: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)
1d5dc283fe
Allow to add root folder to torrent content
2020-12-23 13:07:33 +03:00
Vladimir Golovnev (Glassez)
77555cd5c2
Improve torrent name handling
2020-12-15 10:18:39 +03:00
Chocobo1
498da509db
Use Qt provided forward declaration header
2020-12-09 18:21:02 +08:00
Vladimir Golovnev (Glassez)
c41df9ffbd
Improve coding style
2020-11-17 21:02:37 +03:00
Chocobo1
7a3e397949
Migrate away from deprecated functions in libtorrent 2.0
2020-10-26 00:37:53 +08:00
Chocobo1
ac3ab2432a
Remove redundant namespace prefix
2020-09-25 15:10:20 +08:00
Chocobo1
40e432b127
Bump requirement to libtorrent 1.2
...
Closes #12258 .
2020-06-26 17:17:29 +08:00
Chocobo1
9f281c2d25
Avoid holding entire file in memory
...
Previously we need a file buffer that is as large as the file size and
this could be a problem when user has less free memory available or
having very large data. Now with the help of `FileOutputIterator`,
we can have a much smaller, fixed size immediate file buffer and also
the code looks nice with `lt::bencode()`.
2020-04-03 18:27:13 +08:00
Vladimir Golovnev (Glassez)
dd0cee44c1
Allow to save downloaded metadata as torrent file
2020-02-26 08:10:11 +03:00
Chocobo1
bf58555a7a
Migrate away from deprecated API
2019-11-29 02:57:31 +08:00
Chocobo1
b5b678c58f
Replace QString::split() by faster alternatives
2019-08-08 18:57:54 +08:00
Chocobo1
e90a2c00a5
Replace QList by QVector
2019-08-05 20:56:15 +08:00
Vladimir Golovnev (Glassez)
60ffa3030e
Don't use deprecated libtorrent features
2019-07-21 19:28:28 +03:00
Vladimir Golovnev (Glassez)
8e65317d61
Rename "fromNativePath" to "toUniformPath"
...
Unlike "toNativePath" which name clearly reflects the function result
"fromNativePath" has no such clear meaning.
Since this function converts path into uniform format "toUniformPath"
is better name.
2019-06-17 15:55:49 +03:00
Chocobo1
ed6bb0efdc
Replace QList by QVector for tracker related operations
2019-05-22 12:57:22 +08:00
Chocobo1
459cdf6071
Fix assertion fail
...
When fileSize == 0, the second index could be smaller than the first index,
thus trigger the assert check in IndexInterval constructor.
Closes #10611 .
2019-05-15 10:22:21 +08:00
Chocobo1
3955eef50d
Change to lt
namespace
...
Quoting from libtorrent doc:
> In the future, libtorrent will be the alias and lt the namespace name.
2019-05-13 11:20:41 +08:00
Chocobo1
677a419f0b
Use upstream defined namespace
...
`lt` namespace is defined since libtorrent 1.1.6 and our master branch requires >= 1.1.10,
so there is no need to add #if condition for it.
2019-05-13 11:20:41 +08:00
Chocobo1
3f962ba336
Fix displaying invalid creation date
...
The bug is only observed when using libtorrent 1.2.
2019-05-06 20:26:14 +08:00