Commit Graph

1308 Commits

Author SHA1 Message Date
Vladimir Golovnev
73028f9930 Double check whether database needs to be updated
Prevents qBittorrent from being failed to start after torrents database metadata is corrupted by one of the first releases of v4.5.x series.

PR #19668.
Closes #19622.
2023-10-01 20:59:27 +03:00
Chocobo1
bda18ad29b Add logging for some alerts
Specifically these alerts:
* i2p_alert
* session_error_alert

PR #19662.
2023-09-30 11:43:44 +08:00
Vladimir Golovnev
16111496ca Improve handling the case when torrent enters/leaves trackerless state
PR #19658.
2023-09-29 07:34:21 +03:00
Vladimir Golovnev
43e9403a4c Filter out duplicate trackers when replacing
PR #19656.
2023-09-29 07:33:19 +03:00
Vladimir Golovnev
7ab90cfc40 Don't forget to delete worker thread object
PR #19655.
2023-09-29 07:32:09 +03:00
Vladimir Golovnev
5e5c6aa7d8 Don't show outdated tracker message
PR #19616.
Closes #19612.
2023-09-20 13:12:54 +03:00
Chocobo1
dcba9eda00 Expose 'DHT bootstrap nodes' setting
This allows user to select DHT bootstrap nodes. Or even use their own bootstrap nodes.

PR #19594.
2023-09-14 13:57:34 +08:00
Vladimir Golovnev
7cd2445a49 Improve tracker entries handling
PR #19496.

* Add torrent entry status to represent tracker error
* Add torrent entry status to represent unreachable endpoint
* Display tracker entry next/min announce time
* Reset tracker entries when torrent is stopped
2023-09-07 08:58:13 +03:00
Victor Chernyakin
e045b4678d Use std::clamp() instead of various custom implementations
PR #19501.
2023-08-27 21:55:08 +03:00
Chocobo1
d8a03cd8d8 Use atomic primitives from standard library
QAtomicInteger underlying is using std::atomic structures, so
using std::atomic directly should not be a problem for us.

PR #19507.
2023-08-28 02:08:40 +08:00
rcarpa
bbac94cc95 Use QThreadPool for torrent creation
The change is in preparation for adding the possibility to create
torrent files via the API.

Rework TorrentCreatorThread to be a more lightweight QRunnable class.
The parameters are now defined on construction time and are fixed
throughout the lifecycle of the TorrentCreator. The lifecycle of the
object is not bound to the one of QDialog anymore; it is now handled
by the QThreadPool. This will enable easier queueing of multiple torrent
creation jobs without risk of spawning many threads.

PR #19500.
2023-08-27 00:27:11 +08:00
Vladimir Golovnev
9ab8203c8a Don't overwrite tracker entry of unrelated protocol
PR #19493.
2023-08-23 12:38:18 +03:00
Vladimir Golovnev
c805606524 Improve tracker entries handling
PR #19468.

* Use QHash to map tracker endpoints
* Don't clear numPeers unexpectedly
* Remove outdated tracker entry endpoints
* Move presentation logic from Core to GUI code
* Show all endpoints per tracker in tree structure

---------

Co-authored-by: Kacper Michajłow <kasper93@gmail.com>
2023-08-21 10:27:19 +03:00
Victor Chernyakin
34d30ed031 Replace Q_UNUSED with [[maybe_unused]] attribute
PR #19471.
2023-08-18 07:09:40 +03:00
Victor Chernyakin
f3f4610ba4 Convert Windows header names to lowercase
PR #19465.
2023-08-16 10:29:13 +03:00
Vladimir Golovnev
dcf3e97291 Implement gateway for adding new torrents
PR #19355.
2023-08-14 18:17:56 +03:00
Victor Chernyakin
e4313d6651 Use using declarations instead of typedef
PR #19458.
2023-08-14 18:14:36 +03:00
Vladimir Golovnev
a0e41a11de Display error message when unrecoverable error occurred
PR #19462.
2023-08-14 16:03:57 +03:00
Vladimir Golovnev
cab5edb721 Add more precondition checks when handle async operation result
PR  #19460.
2023-08-14 16:02:50 +03:00
Victor Chernyakin
850da9dd83 Replace Q_UNLIKELY with [[unlikely]] attribute
PR #19445.
2023-08-11 08:54:26 +03:00
Chocobo1
502b3d3228 Merge pull request #19427 from Chocobo1/cleanup
Remove unused include
2023-08-11 13:49:35 +08:00
Chocobo1
31fe327763 Move to separate headers
Hopefully this can speed up compilation times.
https://doc.qt.io/qt-6/qtglobal.html#details

PR #19430.
2023-08-11 13:47:55 +08:00
Chocobo1
870bcc7a19 Switch to QHash 2023-08-09 20:36:41 +08:00
Vladimir Golovnev
33d767b765 Disable using Qt functions deprecated up to Qt 6.5
* Disable using Qt functions deprecated up to Qt 6.5
* Utilize QSet::removeIf()

PR #19419.
2023-08-08 08:52:13 +03:00
Vladimir Golovnev
fccdeb4e78 Don't use variable after it is moved
PR #19397.
2023-08-02 15:04:15 +03:00
Chocobo1
e31c3376bd Use library provided erase_if()
`Algorithm::removeIf()` is still valuable as `QHash::removeIf()` predicate require an
iterator or a `std::pair`, which both require more code to unpack the variable and therefore
cumbersome to use.

PR #19353.
2023-07-24 20:29:02 +08:00
Chocobo1
d6adebe4c0 Switch to efficient algorithm 2023-07-22 04:11:39 +08:00
Chocobo1
c58aa58cba Use C++20 designated initializers 2023-07-22 02:25:44 +08:00
Chocobo1
7612d5d0ef Use default operators generated/synthesized by compiler 2023-07-22 02:25:44 +08:00
Vladimir Golovnev
10ee1ab7a2 Switch to C++20
PR #19336.
2023-07-21 15:38:49 +03:00
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
Vladimir Golovnev
dbe79484d2 Drop support of Qt 5
Also remove usage of some deprecated stuff.

PR #19338.
2023-07-20 11:17:27 +03:00
Vladimir Golovnev
7b4b7c2b81 Always honor the configured behavior for merging trackers
PR #19305.

* Always honor the configured behavior for merging trackers
* Clarify merging trackers related options
2023-07-16 20:59:18 +03:00
Vladimir Golovnev
6a3a5fac83 Correctly add new column to existing database
PR #19321.
2023-07-15 20:49:51 +03:00
Christopher
35e18498d9 Add option to stop seeding when torrent has been inactive
PR #19294.
Closes #533.
Closes #8073.
Closes #15939.
2023-07-15 13:14:42 +03:00
Vladimir Golovnev
f99a98306d Log when duplicate torrents are being added
PR #19306.
Closes #18458.
2023-07-14 15:33:06 +03:00
Chocobo1
4f6038c350 Merge pull request #19291 from Chocobo1/limits
Expose 'bdecode limits' settings
2023-07-11 11:24:09 +08:00
Chocobo1
5a660fc8a9 Expose 'bdecode limits' settings
This includes:
* Bdecode depth limit
* Bdecode token limit
2023-07-09 15:36:13 +08:00
stalkerok
488464731d Change some default settings
* Reduce default file pool size to 100
* Reduce default stop tracker timeout to 2 seconds

PR #19171.
2023-07-06 14:25:53 +03:00
Vladimir Golovnev
4ef9a6444a Add options to adjust behavior of merging trackers to existing torrent
PR #19278.
Closes #19251.
2023-07-06 07:55:59 +03:00
Chocobo1
66dfe8545d Expose 'max torrent file size' setting 2023-07-06 12:45:09 +08:00
Vladimir Golovnev
7ec80263e1 Allow to globally disable the use of proxy
PR #19273.
Closes #19141.
2023-07-04 09:27:46 +03:00
Vladimir Golovnev
80c637bf99 Always use the same limits when parse bencoded data
PR #19263.
2023-07-02 11:37:37 +03:00
Chocobo1
715a4f3eb6 Use move construct for large data 2023-07-01 16:28:15 +08:00
Chocobo1
8655e48336 Use move construct for shared pointers 2023-07-01 16:28:13 +08:00
Chocobo1
3c139ca333 Fix potential use-after-move
The evaluation order for function parameters is unspecified in C++.
https://stackoverflow.com/questions/2934904/order-of-evaluation-in-c-function-parameters

Fix up 1b2ff0f6f8.
2023-07-01 14:38:50 +08:00
Chocobo1
6680fdda18 Fix typos 2023-06-26 16:45:44 +08:00
Vladimir Golovnev
1c654d8f47 Immediately update torrent status on moving files
PR #19220.
2023-06-25 12:45:58 +03:00
luzpaz
deec2ae1b1 Fix various typos
PR #19213.
2023-06-24 16:04:04 +03:00
Vladimir Golovnev
3b948b0130 Drop I2P support with libtorrent 1.2
PR #19207.
Closes #19152.
2023-06-23 16:24:34 +03:00