Commit Graph

108 Commits

Author SHA1 Message Date
Yat Ho
25d2ebf8fc refactor: overhaul tr_address special address checks (#7818)
* refactor: rewrite is_martian_addr() with tr_address methods

- Fix broken check for IPv4 multicast address in is_martian_address()

* refactor: rewrite is_global_unicast_address()

- Rewrite using new tr_address methods
- Add missing IPv4 loopback check
- Follow RFC 4291 IPv6 global unicast definition
- Fix and update existing tests

* chore: reorganise methods and add comments

* fix: check for teredo and 6to4

* test: tests for new methods
2025-11-21 18:09:38 -06:00
Yat Ho
555d4681c5 perf: reduce memory profile in announce failed handling (#7748) 2025-10-30 10:11:56 -05:00
Yat Ho
41dd2cfd53 fix: accept either one of udp announce response (#7583)
* fix: accept either one of udp announce response

* fix: udp announcer tests should read packets in-order

* test: housekeeping

* test: new tests for the new logic
2025-10-27 12:08:59 -05:00
Yat Ho
d3f22cb1cc fix: don't halt udp tracker requests if dns is pending (#7634) 2025-10-13 23:31:15 -05:00
Yat Ho
c215de34d5 chore: move away from fmt/core.h (#7557) 2025-05-06 01:01:12 -05:00
Yat Ho
9e15394c65 refactor: announcer code housekeeping (#7496)
* 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
2025-05-01 17:50:14 +01:00
Dzmitry Neviadomski
7e87adcd91 Fix building transmission with C++23 (#6832)
* 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>
2025-03-10 13:08:57 -05:00
Charles Kerr
7820f54ba1 refactor: remove TR_DISABLE_COPY_MOVE macro (#7344) 2024-12-29 00:15:39 -06:00
Yat Ho
7e2212bfe0 refactor: simplify addrinfo unique_ptr definition (#7060) 2024-08-13 11:12:02 +01:00
Yat Ho
120b2fb6a0 chore: misc formatting updates and fixes (#7049)
* chore: remove redundant `.clang-format` entry for `TR_DEFINE_QUARK`

Left-over from bf41e1487a.

* chore: remove redundant `.clang-format` entry for `API_HEADER_*`

Left-over from f7edcfcb2a.

* chore: drop deprecated options in favour of `PackConstructorInitializers`

* fix: invalid `SpacesInAngles` value

* chore: add comment to forecast a change we need to make in the future

* chore: add trailing comma to prettify lambda
2024-08-13 00:44:39 +01:00
Yat Ho
a76a07ae99 chore: misc code cleanups (#6927)
* refactor: avoid repeated subscripting in `announcer-udp.cc`

* chore: remove redundant locking in global ip cache

* chore: misc code cleanup in global ip cache

* fixup! chore: misc code cleanup in global ip cache

* refactor: remove `tr_global_ip_cache::create()`

* refactor: rename `tr_global_ip_cache` to `tr_ip_cache`

* build: sync changes to xcode
2024-07-14 01:37:55 +01:00
Yat Ho
1f10c50979 ci: bump clang-tidy from 14 to 18 (#6923)
* ci: bump `clang-tidy` from 14 to 18

`clang-tidy-14` has been crashing when being run on `peer-mgr.cc` since 96de1706af.

According to https://github.com/llvm/llvm-project/issues/95631, upgrading to `clang-tidy-18` fixes this.

* chore: workaround clang-tidy false positives

* fix: limit nolint comment scope

* code review: try avoiding false positive without nolint
2024-06-15 21:06:37 +01:00
Yat Ho
4657d210ba feat: dual stack udp tracker support (#6687)
* 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>
2024-05-26 15:43:55 -05:00
Charles Kerr
eeea3c540f fix: clang-tidy-19 warnings (#6597)
* fix: readability-redundant-casting warnings in libtransmission

* fix: readability-avoid-return-with-void-value warnings in libtransmission

* fix: readability-redundant-member-init warnings in libtransmission

* fix: readability-redundant-inline-specifier warnings in libtransmission

* fix: performance-avoid-endl warnings in libtransmission

* fix: bugprone-multi-level-implicit-pointer-conversion warnings in libtransmission

* fix: bugprone-switch-missing-default-case warnings in libtransmission

* fix: readability-redundant-string-cstr warnings in libtransmission

* fixup! fix: bugprone-multi-level-implicit-pointer-conversion warnings in libtransmission
2024-02-13 10:42:19 -06:00
Charles Kerr
239478925f fix: performance-enum-size warnings (#6504) 2024-01-08 08:32:58 -06:00
Charles Kerr
25d67dd00d refactor: in tr_announce_list, replace port_and_str with aggregated parsed url (#6323) 2023-12-01 15:48:04 -06:00
Charles Kerr
64d9d57363 chore: fix minor clang-tidy warnings (#6275) 2023-11-21 09:02:03 -06:00
Yat Ho
90e91d6284 refactor: directly check if announcers are idle instead of using a stop counter (#6237) 2023-11-12 21:43:43 -06:00
Julien
8ac323d5d6 chore: removed copyright timespans in headers (#4850) 2023-11-01 16:11:11 -05:00
Yat Ho
c70c49e87b fix: encode ip in network byte order for udp announce (#6126) 2023-10-18 09:46:57 -05:00
Yat Ho
e39045cf69 refactor: tidy up announcer code (#5945) 2023-09-01 16:51:58 -05:00
Yat Ho
eea7d4d886 refactor: re-organise net.h member functions (#5878) 2023-08-17 22:13:01 -05:00
tearfur
5ec4ca550e chore: iwyu (#5746) 2023-07-08 10:24:03 -05:00
Charles Kerr
c364abcb6f chore: misc-include-cleaner (partial) (#5738) 2023-07-06 10:00:07 -05:00
Charles Kerr
6a2a4c3032 perf: move log strings instead of cloning them (#5726) 2023-07-04 14:03:45 -05:00
Charles Kerr
ce66e5c442 iwyu: remove, add std headers where used (#5694)
* chore: remove unused #include <array>

* chore: remove unused #include <chrono>

* chore: remove unused #include <set>

* chore: remove unused #include <algorithm>

* chore: remove unused #include "interned-string.h"

* chore: remove unused #include <list>

* chore: remove unused #include <optional>

* chore: iwyu <cstddef>

* chore: iwyu <ctime>

* chore: remove unused #include <cerrno>

* chore: remove unused #include <deque>

* chore: remove unused #include <vector>

* chore: remove unused #include <memory>

* chore: remove unused #include <unordered_set>

* chore: remove unused #include <array>

* chore: remove unused #include <mutex>

* chore: remove unused #include <functional>

* chore: remove unused #include <cmath>
2023-06-29 23:51:55 -05:00
Charles Kerr
9afced725a refactor: remove libtransmission::Buffer (#5676)
* refactor: use StackBuffer in announcer-udp

* chore: update buffer tests

* refactor: remove unused libtransmission::Buffer

superseded by libtransmission::StackBuffer
2023-06-27 19:06:25 -05:00
Charles Kerr
dc88b97f37 refactor: small again (#5666)
* refactor: restore the non-small parts of 5654

* refactor: restore the peer-mgr-active-requests parts of 5654

* chore: iwyu evbuffer in web.h
2023-06-25 12:33:32 -05:00
Charles Kerr
df1adf0e0f chore: revert small buffer (#5654)
* Revert "perf: use libsmall in libtransmission, pt 3 (#5653)"

This reverts commit 3b03494580.

* Revert "perf: use small in libtransmission (#5650)"

This reverts commit 559f6f0332.
2023-06-22 18:42:48 -05:00
Charles Kerr
559f6f0332 perf: use small in libtransmission (#5650)
* refactor: reimplement Buffer using small

* refactor: use SmallBuffer in announcer-udp

* refactor: use SmallBuffer in variant-json

* refactor: use SmallBuffer in variant-benc

* refactor: use SmallBuffer in handshake

* refactor: use SmallBuffer in peer-msgs

* refactor: delete move semantics on stack-based buffers
2023-06-21 22:41:09 -05:00
Charles Kerr
52b03c2489 refactor: migrate methods to buffer reader (#5533) 2023-05-18 16:56:29 -05:00
Charles Kerr
2cf9678737 fix: revert buffer reserve space (#5528)
* Revert "refactor: use BufferReader, BufferWriter as function args (#5518)"

This reverts commit c2d48a7d11.

* Revert "fixup! refactor: add BufferReader, BufferWriter::reserve_space() (#5513)"

This reverts commit b08e17beef.

* Revert "refactor: add BufferReader, BufferWriter::reserve_space() (#5513)"

This reverts commit 51fd7056ba.
2023-05-14 17:24:42 -05:00
Charles Kerr
c2d48a7d11 refactor: use BufferReader, BufferWriter as function args (#5518) 2023-05-12 18:10:08 -05:00
Charles Kerr
51fd7056ba refactor: add BufferReader, BufferWriter::reserve_space() (#5513) 2023-05-12 11:15:15 -05:00
Charles Kerr
0d3b321bac refactor: use snake_case for libtransmission class methods (#5497) 2023-05-05 23:11:05 -05:00
Charles Kerr
7d86d67bc7 chore: prefer fmt/core.h over fmt/format.h (#5404) 2023-04-16 15:34:19 -05:00
Charles Kerr
d72cb67cfb chore: include directory name in libtransmission #includes (#5308) 2023-04-14 14:33:23 -05:00
Julien
4b8cfa2e57 chore: update copyrights to 2023 (#4834) 2023-02-11 14:49:42 -06:00
Charles Kerr
6c99e95463 fix: ensure ipv4 for udp announces. (#4723)
This is an interim fix to unblock 4.0.0. See ticket 4719 for details.
2023-02-05 23:31:10 -06:00
Charles Kerr
948f597d15 refactor: buffer snake case (#4682) 2023-01-27 20:12:09 -06:00
Charles Kerr
9678b26984 refactor: misc-use-anonymous-namespace pt. 3 (#4539) 2023-01-07 08:27:54 -06:00
Charles Kerr
cc4cbff049 refactor: misc-use-anonymous-namespace pt. 2 (#4538) 2023-01-04 22:16:22 -06:00
Charles Kerr
eb27220662 perf: avoid vector temporary in announcer-udp (#4519) 2023-01-02 12:41:47 -06:00
Charles Kerr
806491232b refactor: add constexpr (#4514) 2023-01-01 22:43:23 -06:00
Charles Kerr
453836f324 refactor: make announce key param unique per-torrent (#4508) 2023-01-01 13:22:50 -06:00
Charles Kerr
0a69685a4e refactor: tr_address cleanup (#4338)
* 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
2022-12-08 20:27:52 -06:00
Charles Kerr
595d0ac14a refactor: add tr_announcer.startShutdown() (#4280) 2022-11-29 21:05:11 -06:00
Charles Kerr
eeaefca6f3 refactor: UDP and TCP announces use same timeout interval (#4279)
* refactor: move announce, scrape timeout intervals into announcer-common.h

* refactor: udp and http announces, scrapes use same timeout vals
2022-11-29 19:38:53 -06:00
Charles Kerr
8a35aa0903 refactor: add tr_rand_obj() (#4238)
* refactor: add tr_rand_obj()

There are a lot of places in the codebase where we need to populate
an integral type or a fixed-size array with random data. To do this,
we instantiate a local on the stack, fill it with tr_rand_buffer(),
and then use it.

This PR creates a helper function to make this a one-liner.
2022-11-25 15:04:37 -06:00
Charles Kerr
19bc15523f fix: new sonarcloud, coverity, gcc warnings (#4229) 2022-11-23 13:47:04 -06:00