Commit graph

90 commits

Author SHA1 Message Date
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
c58aa58cba
Use C++20 designated initializers 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
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
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
Vladimir Golovnev
1c654d8f47
Immediately update torrent status on moving files
PR #19220.
2023-06-25 12:45:58 +03:00
Vladimir Golovnev
3b948b0130
Drop I2P support with libtorrent 1.2
PR #19207.
Closes #19152.
2023-06-23 16:24:34 +03:00
Chocobo1
e6d85a468b
Rename literal operator
Qt 6.4 introduced `QString operator""_s()` and the previous `""_qs` is
deprecated since Qt 6.8.
2023-06-18 03:32:44 +08: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
Vort
ff5d02bcf2
Make I2P session options configurable
PR #19079.
Closes #18980.
2023-06-06 08:35:40 +03:00
Vladimir Golovnev
c10f1f0ad2
Consider explicitly specified parameters when resolving optional ones
PR #18955.
Closes #18951.
2023-05-11 09:09:57 +03:00
Vladimir Golovnev
58ae98026b
Try to detect system wake-up event
PR #18934.
Closes #17898.
2023-05-10 15:02:15 +03:00
Vladimir Golovnev (Glassez)
bb959bda8c
Add helpers for suggesting torrent paths 2023-05-07 16:34:56 +03:00
Vladimir Golovnev (Glassez)
6fa53b5ed8
Override add torrent params in a more comprehensible way 2023-05-07 16:34:56 +03:00
Vladimir Golovnev (Glassez)
c777ed3299
Correctly use fallback value for "Add to top of queue" option 2023-05-07 16:34:56 +03:00
Chocobo1
e7e5c38384
Remove superfluous header include 2023-05-06 16:48:49 +08:00
Chocobo1
e408973ee6
Add pointer qualifications to auto-typed variables 2023-05-06 16:35:13 +08:00
Chocobo1
8c9b6e2f2d
Use reference whenever possible 2023-05-06 16:35:13 +08:00
Vladimir Golovnev
d83b2a6131
Make sure ResumeSessionContext is destroyed before start processing
PR #18912.
2023-05-02 09:48:49 +03:00
Vladimir Golovnev
51132c817b
Improve move storage handling
PR #18857.
Closes #18795.
2023-04-18 08:06:18 +03:00
Chocobo1
77411760a0
Expose 'socket send/receive buffer size' options
Closes #18794.
2023-04-05 18:11:13 +08:00
Vladimir Golovnev
8bcac1bed2
Reduce default file pool size
PR #18734.
2023-03-21 08:39:06 +03:00
Vladimir Golovnev
cdded6cef7
Add (experimental) I2P support
PR #18717.
Closes #16257.
2023-03-21 08:33:46 +03:00
Chocobo1
a450a7c6e1
Delegate string hashing to standard library
Since standard library could have platform dependent specialized hashing functions.
Also the main idea is to let `qHash` handle whatever integer type `std::hash` returns and mix it with `seed` accordingly.

PR #18715.
2023-03-18 14:09:35 +08:00
Vladimir Golovnev
9ef23d524d
Prevent incorrect log message about torrent content deletion
PR #18692.
Closes #18689.
2023-03-16 09:40:21 +03:00
Vladimir Golovnev (Glassez)
cbf591a8b5
Improve SOCKS5 error messages 2023-02-26 14:27:59 +03:00
Vladimir Golovnev (Glassez)
96da685e5d
Expand the scope of "Proxy hostname lookup" option 2023-02-26 14:27:59 +03:00
Vladimir Golovnev (Glassez)
6ac14d0c57
Allow to use proxy per subsystem 2023-02-26 14:27:41 +03:00
Vladimir Golovnev (Glassez)
4745a40f0b
Allow to specify proxy option per request 2023-02-25 17:30:26 +03:00
Hanabishi
d75fd3fcde
Show filtered port numbers in logs
PR #18544.
2023-02-18 08:14:27 +03:00
Vladimir Golovnev
1e913f46f0
Rename isSeed to isFinished to correctly represent its meaning
PR #18580.
2023-02-17 07:08:00 +03:00
Vladimir Golovnev
7600f59f3a
Prevent precise timers from being used when unnecessary
The implementation of QTimer::singleShot() uses Qt::PreciseTimer if interval is less than 2 seconds. This isn't mentioned in the docs.
Qt::PreciseTimer increases the system's timer resolution which negatively affects power consumption.

PR #18555.
Closes #18350.
2023-02-14 08:26:08 +03:00
Vladimir Golovnev
d06f78dbbd
Improve sync API performance
PR #18394.
2023-02-10 17:16:46 +03:00
Vladimir Golovnev
5d4766edbe
Allow to add new torrents to queue top
PR #18518.
Closes #11599.
2023-02-10 17:15:41 +03:00
Vladimir Golovnev
09e58df03f
Don't increase limits when prefetching metadata for added magnets
Adjusting limits was made based on the belief that "forced" torrents (internally used for prefetching metadata)
are still under limits, but ignore only the queue. This is not really the case. "Forced" torrents ignore the limits
like "maximum active torrents/downloads", so adjusting limits is not required, and what's more, it really causes the
problem of unexpectedly activated previously queued torrents when adding some magnet using "Add new torrent" dialog.

PR #18503.
Fixes #18490.
2023-02-02 06:16:32 +03:00
Vladimir Golovnev
2b20d5b260
Fix startup performance on Qt5
Use more appropriate container (QList) for resume data queue buffer.
QVector in Qt5 has poor performance of the first element taking operation,
which is used to process the resume data queue. In Qt6, QVector is just an
alias for QList, so there was no problem there.

PR #18387.
Fixes #18341.
2023-01-16 14:45:12 +03:00
Vladimir Golovnev
719e4afd8c
Remove confusing helpers from Session interface
Such helpers do not make practical sense, since they can be trivially implemented on top of the base interface, but at the same time they can lead to undesirable consequences when some calling code requires slightly different behavior than another.

PR #18367.
Fixes #18338.
2023-01-16 14:43:36 +03:00
Vladimir Golovnev
594f9e8632
Use "additional trackers" when metadata retrieving
This can help when the DHT nodes are few.

PR #18251.
Closes #18244.
2022-12-22 08:21:29 +03:00
Vladimir Golovnev (Glassez)
40258f6a2f
Stop async worker at correct place 2022-12-14 10:42:40 +03:00