* refactor: remove the tr_error** idiom
* fix: tr_error::message() is only constexpr in c++20 and up
* chore: silence a couple of g++-12 Wshadow warnings
* pbxproj refactor:
- Renamed "Copy Files" build phase more explicitly
- Factored "Cocoa.framework" references and removed unused frameworks
* - Made timer.h "Project" only instead of Public
* - Declared libtransmission headers as C++ headers
* chore: replace deprecated NSNamePboardType with NSPasteboardTypeName
* chore: remove NSServices section from Info.plist
It appears to be noop on modern macOS if no action specified.
* Prefer `PROJECT_{SOURCE,BINARY}_DIR` to `CMAKE_` ones
* Extend use of 3rd-party dir vars to reduce duplication
* Fix typo in submodule repo name
* Remove `CURL::libcurl` target fallback
The target is always available since CMake 3.12, which is our current
minimum version.
When getting all torrents in a batch over RPC, the results are sorted by
info-dict hash. Prior to 4.0.0, they were sorted by ID. This change broke
some peoples' workflows.
I'm OK with breaking workflows if it's necessary to improve the program,
but this was an unintentional side-effect and I don't see any inherent
benefit to either sort order. So this PR restores the 3.00 sort order.
https://xkcd.com/1172/
* refactor: directly copy from socket to incoming payload
* refactor: directly process the incoming field
There is no need to copy the payload to a new buffer before processing.
`process_peer_message()` isn't going to return until it's done, and nothing else is going to mess with the incoming field while inside `process_peer_message()`.
* refactor: remove while loop
* add assert
* refactor: use std::set instead of QSet in WatchDir.cc
* refactor: use std::set instead of QSet in FileTreeView.cc
* refactor: use std::set instead of QSet in ColumnResizer.cc
* refactor: use std::set instead of QSet in Prefs.cc
* chore: fix rebase error that changed libsmall snapshot
* refactor: more replace QSet with std::set
* refactor: minor decoupling in peer-mgr
Pass a tr_torrents& and TimerMaker& into the tr_peerMgr and HandshakeMediator
constructors so they can be used directly instead of via tr_session.
No functional changes.
* refactor: in HandshakeMediator, make the session reference const
in (void)startDownload: now trimming whitespaces at the beginning and
end of the BlocklistURL, otherwise the download will fail, if the URL
contains a beginning or trailing whitespace.
Signed-off-by: Benedikt Bergenthal <benedikt@kdrennert.de>
Co-authored-by: Benedikt Bergenthal <benedikt@kdrennert.de>
* feat: add `ipProtocol` argument to `port-test` rpc method
* chore: update rpc-spec.md
* feat: split port check UI to IPv4 and IPv6 in webUI
* fix: default `open` to false if cannot get response
* chore: minor docs wording tweak
* chore: make clang-tidy happy
* chore: RPC doc tweaks
* fix: bad merge
* chore: review feedback
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: match quark enum with parameter case
* refactor: use descriptive strings for `ipProtocol`
* chore: update docs
* fixup! refactor: use descriptive strings for `ipProtocol`
* fixup! chore: update docs
---------
Co-authored-by: Charles Kerr <charles@charleskerr.com>