Commit Graph

130 Commits

Author SHA1 Message Date
Yat Ho
f7373cb648 fixup! chore: move away from fmt/core.h (#7557) (#7595) 2025-06-02 18:53:56 -05:00
Yat Ho
40814a3195 refactor: save outgoing len(PadA), len(PadB) and len(IA) (#6973)
* refactor: save length of PadA and PadB sent

* refactor: log outgoing `len(PadA)` and `len(PadB)`

* refactor: set `ia_len_` as the MSE handshake initiator
2025-03-10 11:06:42 -05:00
Yat Ho
088232f69c fix: abort handshake if the torrent is stopped (#6947)
* fix: abort handshake if torrent isn't running

* fix: check if torrent is running in all cases

* fix: don't penalise peer if handshake failed because of us

* fix: tests

* perf: ensure copy-elision in `HandshakeMediator::torrent()`

* code review: more accurate log wording
2025-03-10 01:05:16 -05:00
reardonia
50eacf6933 Consume early pad a/b, improve handshake tests (#6987)
* properly consume PadA in MSE handshake, check for invalid Ya+PadA

* refactor: make handshake constants public (needed for test coverage)

* test: split test MSE handshakes by blocking steps

* test: use `ASSERT_TRUE` instead of `assert`

* test: fix windows crash by using `recv` and `send`

Co-authored-by: Yat Ho <46261767+tearfur@users.noreply.github.com>

* refactor: use `TR_IF_WIN32` for `LOCAL_SOCKETPAIR_AF`

Co-authored-by: Yat Ho <46261767+tearfur@users.noreply.github.com>

---------

Co-authored-by: Yat Ho <lagoho7@gmail.com>
Co-authored-by: reardonia <reardonia@github.com>
Co-authored-by: Yat Ho <46261767+tearfur@users.noreply.github.com>
2025-01-09 10:26:48 -06:00
reardonia
5c714a5599 refactor: add handshake fire_timer() instead of overloading fire_done() (#6966) 2024-12-14 15:14:44 -06:00
Charles Kerr
19543ba65f fix: clang-tidy-20 warnings (#7187)
* fix: readability-math-missing-parentheses clang-tidy warnings

* chore: remove unused function tr_ctorGetSession()

* chore: remove unused function tr_ctorGetIncompleteDir()

* chore: make generatePublicKey() a lambda

* fix: readability-container-contains warnings

* fix: misc-use-internal-linkage warnings

* chore: inline generate_public_key() since it was only used once
2024-10-21 20:57:01 -05:00
Yat Ho
ab66f73c74 fix: properly reconnect on handshake error (#6950)
* fix: clear read buffer when closing connection

* fix: clear write buffer when closing connection

* fix: disable encryption when reconnecting

* refactor: dedupe code

* fix: maybe reconnect using MSE handshake if it was an utp failure

* chore: misc housekeeping

* chore: removed `tr_peerIo::utp_supported_`

* refactor: more logs in `tr_handshake::on_error()`
2024-10-21 17:45:58 -05:00
Yat Ho
b5cc6916ef fix: don't retry plain handshake in AwaitingVc state (#6969) 2024-10-21 16:31:11 -05:00
Yat Ho
1b57c294be fix: process BT messages that immediately follows handshake (#6913)
* refactor: don't loop in `tr_handshake::can_read()`

* fix: return `READ_NOW` after handshake success

* code review: more accurate comment wording

* Revert "refactor: don't loop in `tr_handshake::can_read()`"

This reverts commit 4f33520cba6a38171ed203a071158aa37ddcd325.

* refactor: convert `ReadState` to enum class

* refactor: use new `ReadState` value to break out of loop
2024-08-24 17:04:28 -05:00
Yat Ho
34dbaaad7e fix: add missing write() call in MSE handshake (#6891)
* refactor: tidy up variables in `tr_handshake::read_crypto_provide()`

* fix: make sure to send out `crypto_select`

* chore: fix comment

---------

Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-08-24 14:18:57 -05:00
Yat Ho
b0a6bf964c perf: lazy initialise Diffie-Hellman in handshake (#6949)
* perf: don't generate private key when default constructing DH

* refactor: simplify dh pool code using `small::max_size_vector`

* perf: lazy initialise handshake DH

* fix: tests

* refactor: use `std::optional` instead of `DH::is_dummy()`

* perf: try recycling DH objects in handshake destructor

* fix: don't set `have_read_anything_from_peer_` until all sanity checks are finished
2024-08-23 16:14:45 -05:00
reardonia
24f1e15767 refactor: clarify MSE crypto algo. this is a per-algorithm key, not for crypto generally (#6957)
Co-authored-by: TR Reardon <reardonia@github.com>
2024-07-06 23:25:15 -05:00
Yat Ho
6384abeb2b fix: invalid socket address in tr_peerIo::reconnect() (#6750)
* fix: don't discard socket if reconnect failed

* fix: don't try to reconnect more than once
2024-03-30 15:26:55 -05:00
Yat Ho
152f3e91a5 refactor: convert tr_peerMsgsImpl helper functions to class methods (#6580)
* refactor: update bep links

* chore: use more appropriate data types

* chore: checkpoint

* refactor: split `can_request()` into each of their own different signature

* chore: checkpoint

* refactor: convert tr_peerMsgsImpl functions to methods

* chore: checkpoint

* refactor: store peer info as reference

* refactor: convert all member variables to private

* chore: re-arrange methods

* refactor: optimise tmp vector default size in `send_ut_pex()`

* chore: housekeeping

* chore: housekeeping

* refactor: avoid `dynamic_cast` when sending cancel

* fix: restore `blocks_sent_to_peer` stat

regression e91af26923

* fix: choke first then reject

* refactor: convert `tr_peerMsgsNew()` to static factory function

* refactor: store `tr_torrent` reference instead of pointer

* Revert "refactor: store peer info as reference"

This reverts commit bb419bf2

---------

Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-03-15 19:52:09 -05:00
Charles Kerr
50dca24f50 refactor: aggregate crypto handles when computing digests (#6662)
* refactor: aggregate per-crypto-pkg fields instead of using inheritance
2024-03-04 16:59:51 -06:00
Charles Kerr
3f6969217c chore: remove FMT_STRING macros (#6497) 2024-01-06 14:05:18 -06:00
Charles Kerr
64d9d57363 chore: fix minor clang-tidy warnings (#6275) 2023-11-21 09:02:03 -06:00
Charles Kerr
a952a0731f refactor: remove the tr_error** idiom (#6198)
* 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
2023-11-04 11:39:41 -05:00
Julien
8ac323d5d6 chore: removed copyright timespans in headers (#4850) 2023-11-01 16:11:11 -05:00
Yat Ho
7973d873ff feat: BT and MSE handshake rework (#6025) 2023-09-26 12:50:41 -05:00
Charles Kerr
8169d524ea feat: do not auto-disconnect when a known seed initiates a connection and we are seeding (#5756) 2023-07-08 14:27:31 -05:00
tearfur
5ec4ca550e chore: iwyu (#5746) 2023-07-08 10:24:03 -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
24bc3d135d perf: add StackBuffer using small::vector (#5672)
* perf: use libtransmission::StackBuffer in variant-benc

* perf: use libtransmission::StackBuffer in variant-json

* perf: use libtransmission::StackBuffer in handshake

* perf: use libtransmission::StackBuffer in peer-msgs

* perf: use libtransmission::StackBuffer in peer-io
2023-06-27 10:51:20 -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
tearfur
699b3d8416 perf: use a std::map to store peers in tr_swarm (#5645) 2023-06-22 15:21:44 -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
tearfur
64261685d8 fix: use both address + port together as a key for peer lookup (#5619) 2023-06-19 20:26:39 -05:00
Charles Kerr
4fd5f3a490 refactor: use reserve_space() in peer-io (#5532) 2023-05-17 13:57:27 -05:00
Charles Kerr
e88bf946e1 perf: avoid extra work in read_vc() (#5527) 2023-05-14 15:01:04 -05:00
Charles Kerr
0d3b321bac refactor: use snake_case for libtransmission class methods (#5497) 2023-05-05 23:11:05 -05:00
Charles Kerr
9d2507c7e3 refactor: snake_case in libtransmission class methods (#5428) 2023-04-22 20:25:55 -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
Charles Kerr
e29064023f fix: try utp connection first; fix utp timeout issues. (#4897) 2023-02-18 10:03:59 -06:00
Julien
4b8cfa2e57 chore: update copyrights to 2023 (#4834) 2023-02-11 14:49:42 -06:00
Charles Kerr
948f597d15 refactor: buffer snake case (#4682) 2023-01-27 20:12:09 -06:00
Charles Kerr
7367d465b5 style: use the new paragraph comment style everywhere (#4634) 2023-01-22 13:21:30 -06:00
Charles Kerr
d290ece0c8 perf: recycle DH MSE keys iff peer was unreachable (#4412) 2022-12-19 16:49:26 -06:00
Charles Kerr
5743758edd Revert "perf: recycle Diffie-Hellman keys iff peer was unreachable (#4408)"
This reverts commit 35a0211118.
2022-12-19 15:12:33 -06:00
Charles Kerr
35a0211118 perf: recycle Diffie-Hellman keys iff peer was unreachable (#4408) 2022-12-19 14:45:01 -06:00
Charles Kerr
cc4141c619 fixup: 3899255 (#4394) 2022-12-18 11:18:25 -06:00
Charles Kerr
e6d75a4b77 refactor: tr_peerIo (#4372) 2022-12-16 01:23:12 -06:00
Charles Kerr
6f1153cae4 refactor: tr_handshake (#4362) 2022-12-13 19:58:39 -06:00
Charles Kerr
2f6315b649 refactor: tr_handshake lifecycle (#4358) 2022-12-13 11:59:21 -06:00
Charles Kerr
0061e4f9a9 refactor: tr_address::display_name() (#4335) 2022-12-08 16:44:19 -06:00
Charles Kerr
9a5d9a0ba2 refactor: tr_peer_socket (#4325)
* refactor: make tr_peer_socket.type private

* refactor: reimplement tr_peerIo::address() as a wrapper around tr_peer_socket::address()

* refactor: remove tr_address, tr_port from tr_peerIo

* refactor: replace tr_netClosePeerSocket() with tr_peer_socket::close()
2022-12-05 18:53:31 -06:00
Charles Kerr
468310300c refactor: only need a single handshake mediator (#4322) 2022-12-05 11:47:11 -06:00
A Cœur
e038121857 refactor: second log of UTP errors as 'trace' messages (#4283) 2022-11-30 14:06:08 -06:00
Charles Kerr
59335eac03 fix: sonarcloud cpp:S6004 (#4270)
reduce scope of variables by using if-based initializer
2022-11-28 21:03:28 -06:00