aboutsummaryrefslogtreecommitdiff
path: root/crates/tor-proto/src/client
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Merge branch 'correct_replace_behavior' into 'main'Nick Mathewson2025-09-153-32/+49
|\ \ \ | | | | | | | | | | | | | | | | Circuit padding: fix a couple of issues with the "replace" flag. See merge request tpo/core/arti!3246
| * | | Apply 1 suggestion(s) to 1 file(s)Nick Mathewson2025-09-151-1/+1
| | | | | | | | | | | | Co-authored-by: gabi-250 <[email protected]>
| * | | proto: Only replace padding when the target will see it.Nick Mathewson2025-09-103-6/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we would replace padding with any cell that was already in the queue. But that doesn't make sense: If we have a cell queued for hop 1, then we shouldn't use it as padding for hop 2, since hop 2 will never see it! Instead, we look at the target hops for the already queued cells. Ref: - https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3225/diffs?commit_id=3998e0559fbcc06f8ea88968051cebca71489a52
| * | | proto: Emit the correct events on replacing paddingNick Mathewson2025-09-102-27/+29
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | When we replace padding with an _already queued_ cell, we should only trigger PaddingSent on the final hop's machine. Refs: - https://github.com/maybenot-io/maybenot/commit/35ba39d629d1e64a1346586112837e5015c47242#r164166126 - https://github.com/maybenot-io/maybenot/pull/35/commits/715455b8dcd95a32eafe261ab500cfed9415b7f3 - https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3225/diffs?commit_id=79a3305dc226f9f1136cad034e1a36413d6595f5
* | / proto: Simplify/correct padding-based blocking logic.Nick Mathewson2025-09-111-15/+32
| |/ |/| | | | | | | | | | | | | The correction: We want to report a block as bypassable only if _every_ currently blocking hop has bypassable blocking. The simplification: We don't need to report the first hop that's blocking any more.
* | tor-proto: add some missing doc commentsSteven Engler2025-09-105-1/+17
| |
* | tor-proto: put some code behind the "flowctl-cc" featureSteven Engler2025-09-102-0/+2
| |
* | tor-proto: rename `StreamFlowCtrl` constructorsSteven Engler2025-09-104-8/+8
| |
* | tor-proto: simplify `StreamFlowCtrlEnum` with `enum_dispatch`Steven Engler2025-09-105-92/+67
| |
* | tor-proto: rename `StreamFlowControl` to `StreamFlowCtrl`Steven Engler2025-09-106-36/+36
| |
* | tor-proto: rename `StreamFlowControlEnum` to `StreamFlowCtrlEnum`Steven Engler2025-09-101-18/+18
| |
* | tor-proto: remove some unneeded `pub(crate)`Steven Engler2025-09-102-8/+5
| |
* | tor-proto: move xon/xoff flow ctrl logic to `XonXoffFlowCtrl`Steven Engler2025-09-102-143/+171
| |
* | tor-proto: move window flow ctrl logic to `WindowFlowCtrl`Steven Engler2025-09-102-36/+70
| |
* | tor-proto: move flow control state constructorsSteven Engler2025-09-103-7/+27
| |
* | tor-proto: renamed `XonXoffControl` to `XonXoffFlowCtrl`Steven Engler2025-09-102-4/+4
| | | | | | | | For consistency with `WindowFlowControl`.
* | tor-proto: moved `XonXoffControl` and `LastSentXonXoff`Steven Engler2025-09-103-25/+36
| |
* | tor-proto: added a `WindowFlowCtrl` state typeSteven Engler2025-09-104-5/+15
| |
* | tor-proto: move `DrainRateRequest`Steven Engler2025-09-106-12/+15
| |
* | tor-proto: remove a `pub(crate) use` from `client::stream`Steven Engler2025-09-109-13/+18
| | | | | | | | | | For internal types, I think it becomes too much of a mess to export everything through a single module.
* | tor-proto: reorganize some flow control modulesSteven Engler2025-09-106-5/+9
|/ | | | This is all private (or pub(crate)) code.
* Two grammar/typo fixes from @gabi-250Nick Mathewson2025-09-091-1/+1
|
* proto: Make PaddingEvent uninhabited when padding is disabled.Nick Mathewson2025-09-094-22/+29
|
* proto: correctly use the QueuedCellPaddingInfo for padding.Nick Mathewson2025-09-091-8/+15
|
* proto: Implement run_padding_action.Nick Mathewson2025-09-094-8/+194
|
* CircuitCellSender: add methods to implement blocking.Nick Mathewson2025-09-091-0/+41
|
* proto: Watch for PaddingEvents in tunnel reactor.Nick Mathewson2025-09-093-5/+81
| | | | | | | Here we give every Circuit in a conflux set its own PaddingEventStream, and poll it as appropriate. We don't yet actually implement the "take an action" code.
* proto: Make PaddingEventStream implement FusedStream.Nick Mathewson2025-09-082-0/+16
|
* proto: Make CircuitCellSender type conditional depending on circpadding.Nick Mathewson2025-09-081-13/+116
|
* Wrap a Circuit's outbound cell queue as its own type.Nick Mathewson2025-09-082-6/+109
| | | | This will make it easier to refactor this as needed.
* Require maybenot 2.2.0 for paddingNick Mathewson2025-09-081-2/+1
| | | | | It cleans up and changes a few things. Changelog at https://github.com/maybenot-io/maybenot/blob/main/crates/maybenot/CHANGELOG.md
* proto: Apply deferred fmt.Gabriela Moldovan2025-09-041-1/+1
|
* proto: Group the conflux imports.Gabriela Moldovan2025-09-041-6/+2
|
* proto: Use ConfluxCmd instead of CircuitCmd.Gabriela Moldovan2025-09-044-41/+26
| | | | | | This enables us to make the conflux handler logic implementation-agnostic (we want to avoid using `CircuitCmd` here, because it is specific to client circuits).
* proto: Move abstract conflux handlers outside of the client module.Gabriela Moldovan2025-09-045-650/+320
| | | | | | | | | | This moves the shared types under `tor_proto::conflux`. Note: the shared types currently import `CircuitCmd` from `client`. A future commit will change the signature of `handle_msg` to return something other than `CircuitCmd` (this will also improve readability, because in reality, that function can never return most `CircuitCmd` variants).
* proto: Move cmd_counts_towards_seqno to a new conflux module.Gabriela Moldovan2025-09-042-56/+9
| | | | | | | `tor_proto::conflux` is where the shared conflux logic will live. Soon the generic parts of the conflux handlers will be moved there (whereas the client-specific `AbstractConfluxMsgHandler` impl will continue living under `tor_proto::client`).
* proto: Make the ConfluxMsgHandler constructor take an abstract handler.Gabriela Moldovan2025-09-043-23/+17
| | | | | | This will enable us to pull `ConfluxMsgHandler` outside of the `client` module (this is needed because relays are meant to use this type as well, but with a different `AbstractMsgHandler`)
* proto: Add test ensuring consecutive SWITCHes trigger tunnel teardown.Gabriela Moldovan2025-09-041-0/+48
|
* proto: Only send the bad test cell on one of the circuit legs.Gabriela Moldovan2025-09-041-7/+4
| | | | | | | | | This makes it clearer that the tunnel shutdown is triggered correctly (i.e. that it is enough for *one* of the legs to receive the bad SWITCH cell). This also updates a comment that wrongly suggests that the tunnel is only shut down if both legs get removed from the conflux set.
* proto: Pass the cc params as an argument to setup_good_conflux_tunnel.Gabriela Moldovan2025-09-041-12/+13
| | | | | | | The test code now creates the params (which enables it to build test cases that use various params). Resolves a TODO.
* proto: Add another test for SWITCH seqno validation.Gabriela Moldovan2025-09-041-8/+7
|
* proto: Update docs to clarify how we validate SWITCH seqnos.Gabriela Moldovan2025-09-041-8/+6
| | | | Also removes all the TODOs related to #2031 (which is now addressed).
* proto: Close tunnel if a leg receives consecutive SWITCH cells.Gabriela Moldovan2025-09-041-0/+14
| | | | Closes #2031
* proto: Ensure the seqno of the first SWITCH doesn't exceed the init cwnd.Gabriela Moldovan2025-09-041-0/+17
| | | | This partially addresses #2031
* proto: Store the seqno of last cell delivered in the client conflux handler.Gabriela Moldovan2025-09-042-0/+12
| | | | | | This will be needed for the SWITCH seqno validation logic. Part of #2031
* proto: Pass the cwnd params to the conflux message handler.Gabriela Moldovan2025-09-043-2/+50
| | | | | | These will be used for validating SWITCH cells. Part of #2031
* Merge branch 'maybenot-triggers' into 'main'Nick Mathewson2025-09-037-24/+149
|\ | | | | | | | | Circuit padding: note when cells are sent and received See merge request tpo/core/arti!3222
| * padding: Fix compilation with padding disabled.Nick Mathewson2025-09-031-1/+16
| |
| * padding: Report when we have received padding or data.Nick Mathewson2025-09-022-1/+8
| | | | | | | | (This was so much easier than reporting on the send side.)
| * padding: Give CircEnt in a Channel a handle for the PaddingController.Nick Mathewson2025-09-024-9/+33
| | | | | | | | | | This requires some annoying plumbing to make sure that the right types wind up in the right places.