* refactor: use time_t for intervals
* refactor: use appropriate int types
* chore: housekeeping
* perf: replace count with find so it can short circuit
* code review: fix regression noticed by nevack
* fix: operator== should return bool in tr_strbuf
Fixes build error with C++20/C++23
error: return type 'auto' of selected 'operator==' function for rewritten '!=' comparison is not 'bool'
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: explicitly specify Blocklist::size() return type as size_t
Fixes building with C++20/C++23
error: no matching function for call to 'size'
function 'size' with deduced return type cannot be used before it is defined
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: wrap runtime format strings with fmt::runtime in library, daemon and cli
fmt::format_string ctor is consteval with C++20
See https://github.com/fmtlib/fmt/issues/2438
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: wrap runtime format strings with fmt::runtime for GTK client
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: allow to override C and CXX standard via cmdline or env
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: add job to check if transmission compiles with C++23
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* Address code review by mikedld
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix new found fmt build errors
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* Address code review by tearfur
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
* fix: make tr_net_init_mgr singleton buildable with C++23
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
---------
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: move path checking methods to base
* refactor: differentiate "empty string key" and "no key"
* fix: check full path when parsing http announce response
* fix: check full path when parsing http scrape response
* refactor: avoid copying when checking scrape info hash
* fixup! fix: check full path when parsing http scrape response
* chore: housekeeping
* refactor: reduce copying when building payloads
* feat: dual-stack udp tracker support
* refactor: convert function names to snake_case
* fix: `readability-identifier-naming` warning
* fix: account for dual-stack in tests
* code review: add prefix to global names
* fix: don't resolve to IPv4-mapped address
* refactor: use `tr_address` method to check ip protocol
* fix: workaround MSVC x86 build failure
* fix: handle host components that has square brackets
* Partial Revert: "fix: account for dual-stack in tests"
Not needed anymore
* fix: store ipv6 peers in pex6
---------
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: `tr_address` should be invalid by default
* fix: allow loopback address for LPD and incoming connections
* fix: `parseCidrline()` should set address type
* code review: keep `memcmp`
* 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
* chore: rename tr_strvContains to tr_strv_contains
* chore: rename tr_strvStartsWith to tr_strv_starts_with
* chore: rename tr_strvEndsWith to tr_strv_ends_with
* chore: rename tr_strvSep to tr_strv_sep
* chore: rename tr_strvStrip to tr_strv_strip
* chore: rename tr_strvToBuf to tr_strv_to_buf
* refactor: rename tr_saveFile() to tr_file_save()
rename tr_loadFile() to tr_file_read()
rename tr_moveFile() to tr_file_move()
* refactor: rename tr_parseNum() to tr_num_parse()
refactor: rename tr_parseNumRange() to tr_num_parse_range()
* chore: group related functions together in header
* refactor: move tr_tracker_http_announce() helper funcs into their own namespace
* refactor: move tr_globalIPv6() helper funcs into their own namespace
* refactor: move tr_address_is_valid_for_peers() helper funcs into their own namespace
* refactor: make tr_address_compare() a private method
* refactor: rename tr_address::isIPv4() to is_ipv4()
* refactor: use snake_case for tr_address methods
* refactor: make tr_address_is_valid_for_peers() a member function
* refactor: make tr_session.private_peer_port a private field
chore: make tr_session.public_peer_port a private field
* refactor: make tr_session.web_ a private field
* refactor: make tr_session.lpd_ a private field
* refactor: make tr_session.bind_ipv4_ private
refactor: make tr_session.bind_ipv6_ private
* refactor: make tr_session.bandwidth_groups_ private; add const accessor
* refactor: make tr_session.port_forwarding_ private
* refactor: make tr_session.peerMgr private pt 1: add tr_session::addIncoming()
* refactor: make tr_session.peerMgr private pt 1: add tr_session::addTorrent()
* refactor: make tr_session.peer_mgr_ private
* refactor: make tr_session.setPeerPort() private
Fix the following warning emitted when using -flto with GCC 12.2.1:
libtransmission/announcer.cc:929:8: warning: type ‘struct announce_data’ violates the C++ One Definition Rule [-Wodr]
929 | struct announce_data
| ^
libtransmission/announcer-http.cc:299:8: note: a different type is defined in another translation unit
299 | struct announce_data
| ^
libtransmission/announcer.cc:931:15: note: the first difference of corresponding definitions is field ‘tier_id’
931 | int const tier_id;
| ^
libtransmission/announcer-http.cc:301:22: note: a field with different name is defined in another translation unit
301 | tr_sha1_digest_t info_hash;
|
Signed-off-by: Dmitry Antipov <dantipov@cloudlinux.com>
Signed-off-by: Dmitry Antipov <dantipov@cloudlinux.com>