aboutsummaryrefslogtreecommitdiff
path: root/crates/tor-proto/src
Commit message (Collapse)AuthorAgeFilesLines
...
* 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: add SometimesUnboundedSink::as_inner_mut.Nick Mathewson2025-09-091-0/+11
| | | | Include suitable dire warnings about actually using it.
* 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.
* SinkBlocker: Add a comment in poll_flushNick Mathewson2025-09-081-0/+2
|
* SometimesUnboundedSink: clarifying documentation.Nick Mathewson2025-09-081-0/+7
| | | | | Explain how exactly its "you-must-poll-me" behavior relates to the rest of the Sink ecosystem.
* proto: Make CountingPolicy constructors pub(crate).Nick Mathewson2025-09-081-3/+3
|
* 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
* Merge branch 'conflux-refactor' into 'main'gabi-2502025-09-048-728/+739
|\ | | | | | | | | proto: Move implementation-agnostic conflux parts to a new module See merge request tpo/core/arti!3229
| * proto: Fix ConfluxStatus docs post-refactoring.Gabriela Moldovan2025-09-041-1/+1
| |
| * 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-045-52/+58
| | | | | | | | | | | | 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-047-650/+657
| | | | | | | | | | | | | | | | | | | | 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-044-56/+64
| | | | | | | | | | | | | | `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`)
* | Merge branch 'sink_blocker' into 'main'Nick Mathewson2025-09-044-0/+541
|\ \ | |/ |/| | | | | proto: Define a new composable SinkBlocker type. See merge request tpo/core/arti!3228
| * proto: Define a new composable SinkBlocker type.Nick Mathewson2025-09-044-0/+541
| | | | | | | | | | | | | | | | This type wraps a futures::Sink, and allows it to be temporarily blocked and unblocked. I'm going to use this to implement padding-based circuit blocking, according to the designs in !3225.
* | 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
* | proto: Pass owned CongestionWindowParams to CongestionControl::new.Gabriela Moldovan2025-09-043-3/+4
| | | | | | | | | | | | | | We no longer need to clone `CongestionWindowParams` now that it implements `Copy`. Resolves a clippy warning.
* | proto: Derive Copy for CongestionWindowParams.Gabriela Moldovan2025-09-041-1/+1
| | | | | | | | | | These will likely always just be a collection of integers (lightweight to copy).
* | Merge branch 'maybenot-triggers' into 'main'Nick Mathewson2025-09-0310-136/+373
|\ \ | | | | | | | | | | | | Circuit padding: note when cells are sent and received See merge request tpo/core/arti!3222
| * | Whoops; let chains _still_ aren't stable in 1.85.Nick Mathewson2025-09-031-2/+1
| | |
| * | padding: Fix compilation with padding disabled.Nick Mathewson2025-09-031-1/+16
| | |
| * | padding cleanup: use QueuedCellPaddingInfo one more place.Nick Mathewson2025-09-031-5/+3
| | |
| * | 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: Report when outbound cells are flushed.Nick Mathewson2025-09-022-3/+22
| | | | | | | | | | | | | | | | | | (This is what required us to stick a padding controller handle in each CircEnt, and what required us to accompany each queued cell with a QueuedPaddingCellInfo. Ouch!)
| * | padding: Give CircEnt in a Channel a handle for the PaddingController.Nick Mathewson2025-09-027-99/+169
| | | | | | | | | | | | | | | This requires some annoying plumbing to make sure that the right types wind up in the right places.
| * | proto: Turn CircEnt variants into struct-like format.Nick Mathewson2025-09-022-29/+72
| | | | | | | | | | | | (I'm about to add more fields.)
| * | padding: Install a PaddingController in each circuit.Nick Mathewson2025-09-023-5/+16
| | | | | | | | | | | | Also, use it to report that we have queued normal data.
| * | padding: track which hop each queued cell is for.Nick Mathewson2025-09-026-31/+106
| | | | | | | | | | | | | | | | | | | | | | | | We'll need this so that we can tell the right padding machine(s) which of them just had a queue flush. This is not yet 100% done; the unfinished parts are marked with XXXXs.
* | | tor-proto: fix bug in `congestion_signals`Steven Engler2025-09-031-1/+3
| |/ |/|
* | Merge branch 'maybenot-backend' into 'main'Nick Mathewson2025-09-025-0/+1350
|\| | | | | | | | | Define and implement a backend padding API, based on maybenot. See merge request tpo/core/arti!3185
| * padding: document when we set next_scheduled_wakeupNick Mathewson2025-09-021-0/+3
| |
| * padding: Call hops "target" rather than "final" for clarityNick Mathewson2025-09-021-4/+6
| |
| * padding: s/can_bypass/is_bypassable/ for clarity.Nick Mathewson2025-09-022-10/+11
| |
| * padding: Clarify next_expiration vs next_scheduled_wakeupNick Mathewson2025-09-021-4/+9
| |
| * padding: Several comment/style fixes from @gabi-250Nick Mathewson2025-09-024-8/+11
| |