| Commit message (Collapse) | Author | Age | Files | Lines | ||
|---|---|---|---|---|---|---|
| ... | ||||||
| * | proto: Add RelayInitiatorHandshake | David Goulet | 2025-10-23 | 5 | -1/+141 | |
| | | | | | | | | This implements the relay initiator side of the handshake up to the creation of an unverified channel. Signed-off-by: David Goulet <[email protected]> | |||||
| * | proto: Change visibility for some channel objects | David Goulet | 2025-10-23 | 2 | -19/+19 | |
| | | | | | | | | | | | Upcoming code for relay channels are put in the src/relay module and thus we need visibility into some channel generic things. Turns out also we don't need to re-export publicly UnverifiedChannel and VerifiedChannel. Signed-off-by: David Goulet <[email protected]> | |||||
| * | proto: Replace select! with select_biased! | Gabriela Moldovan | 2025-10-22 | 1 | -2/+2 | |
| | | | | | We need to give the control channels higher priority here. | |||||
| * | proto: Update an outdated doc link | Gabriela Moldovan | 2025-10-22 | 1 | -1/+1 | |
| | | ||||||
| * | proto: Add debug log when RelayReactor shuts down | Gabriela Moldovan | 2025-10-22 | 1 | -2/+14 | |
| | | ||||||
| * | proto: Replace futures::select with import | Gabriela Moldovan | 2025-10-22 | 1 | -2/+2 | |
| | | ||||||
| * | proto: Remove no-longer relevant note on control message handling | Gabriela Moldovan | 2025-10-22 | 1 | -10/+0 | |
| | | ||||||
| * | proto: Remove an already-addressed TODO | Gabriela Moldovan | 2025-10-22 | 1 | -2/+0 | |
| | | ||||||
| * | proto: Handle control messages in RelayReactor | Gabriela Moldovan | 2025-10-22 | 2 | -51/+53 | |
| | | | | | Control messages are handled in RelayReactor instead of BackwardReactor. | |||||
| * | proto: Move the control channels to RelayReactor | Gabriela Moldovan | 2025-10-22 | 2 | -53/+53 | |
| | | | | | | This only moves the control/command fields to RelayReactor. The next step is to actually implement the control message handling and dispatch. | |||||
| * | tor-proto: fix `clippy::needless_pass_by_value` warning | Steven Engler | 2025-10-21 | 1 | -0/+1 | |
| | | ||||||
| * | proto: Fix broken doc links | Gabriela Moldovan | 2025-10-21 | 1 | -2/+3 | |
| | | ||||||
| * | proto: Prioritize shutdown over everything else | Gabriela Moldovan | 2025-10-21 | 1 | -8/+8 | |
| | | ||||||
| * | proto: Ensure RelayReactor shuts down the other reactors | Gabriela Moldovan | 2025-10-21 | 3 | -21/+48 | |
| | | | | | | | | | | The `RelayReactor` now holds the sending end of the shutdown broadcast channel, so if `RelayReactor` exits, both the forward and the backward relay reactor will notice and shut down too. Similarly, if the forward or backward reactor exits, the `RelayReactor` will notice (because it select!s between the two), and will shut down | |||||
| * | proto: Add TODO about moving control message handling to RelayReactor | Gabriela Moldovan | 2025-10-21 | 1 | -0/+3 | |
| | | ||||||
| * | proto: Use select not join | Gabriela Moldovan | 2025-10-21 | 1 | -4/+5 | |
| | | | | | | I used `futures::join` by mistake: the intention here is to have `RelayReactor` exit when either one of the fwd/bwd reactors exits. | |||||
| * | proto: Emphasize that we think 2 reactors are better for perf | Gabriela Moldovan | 2025-10-21 | 1 | -4/+8 | |
| | | ||||||
| * | proto: Add a TODO about splitting out fields out of BackwardReactor | Gabriela Moldovan | 2025-10-21 | 1 | -0/+9 | |
| | | ||||||
| * | proto: Move StreamMap split closer to cell_tx docs | Gabriela Moldovan | 2025-10-21 | 1 | -3/+5 | |
| | | | | | This also clarifies why we reroute cells to `BackwardReactor`. | |||||
| * | proto: s/inbound_rx/input for consistency with other reactors | Gabriela Moldovan | 2025-10-21 | 1 | -2/+2 | |
| | | | | | | Things will get very confusing if every reactor uses different variable names for this, so I am renaming it back to input. | |||||
| * | proto: Move channel provider to ForwardReactor | Gabriela Moldovan | 2025-10-21 | 3 | -18/+18 | |
| | | | | | | | | | The channel provider is used to request outgoing channels from the `ChanMgr` in response to `EXTEND`/`EXTEND2` cells, so it belongs in the `ForwardReactor`. (This was leftover from the old circ reactor architecture) | |||||
| * | proto: Remove no longer needed Mutex | Gabriela Moldovan | 2025-10-21 | 1 | -7/+5 | |
| | | ||||||
| * | proto: Remove stray words from docs | Gabriela Moldovan | 2025-10-21 | 1 | -1/+1 | |
| | | ||||||
| * | proto: Disambiguate "channel" and "stream" | Gabriela Moldovan | 2025-10-21 | 3 | -52/+52 | |
| | | ||||||
| * | proto: Say why there are two reactors instead of just one | Gabriela Moldovan | 2025-10-21 | 1 | -0/+23 | |
| | | ||||||
| * | proto: Clarify why we may need to forward cells to BackwardReactor | Gabriela Moldovan | 2025-10-21 | 1 | -2/+3 | |
| | | ||||||
| * | proto: Fix docs post-renaming | Gabriela Moldovan | 2025-10-21 | 1 | -3/+3 | |
| | | ||||||
| * | proto: Avoid calling BackwardReactor "primary" | Gabriela Moldovan | 2025-10-21 | 1 | -5/+1 | |
| | | ||||||
| * | proto: Replace select_biased! with PollAll | Gabriela Moldovan | 2025-10-21 | 1 | -32/+124 | |
| | | | | | | This is the first step towards parallelizing stream reads and writes. | |||||
| * | proto: Replace placeholder () with stream id and msg | Gabriela Moldovan | 2025-10-21 | 3 | -8/+16 | |
| | | | | | | This makes it a bit clearer that `cell_rx` is for moving stream data between `ForwardReactor` and `BackwardReactor`. | |||||
| * | proto: Replace inbound/outbound terminology | Gabriela Moldovan | 2025-10-21 | 2 | -42/+42 | |
| | | | | | The forward/backward terminology is clearer. | |||||
| * | proto: Write a debug log when the reactor starts | Gabriela Moldovan | 2025-10-21 | 1 | -2/+12 | |
| | | ||||||
| * | proto: Restrict the visibility of BackwardReactor | Gabriela Moldovan | 2025-10-21 | 1 | -3/+3 | |
| | | | | | | BackwardReactor is not meant to be used directly (the channel reactor is supposed to use the `RelayReactor` wrapper instead). | |||||
| * | proto: Move BackwardReactor to its own module | Gabriela Moldovan | 2025-10-21 | 2 | -443/+466 | |
| | | | | | | `BackwardReactor` now exists alongside `ForwardReactor`, to make it clearer that they are siblings. | |||||
| * | proto: Add a constructor for BackwardReactor | Gabriela Moldovan | 2025-10-21 | 1 | -16/+54 | |
| | | | | | | We are about to need this, because BackwardReactor will be moved to another module, and we want to keep its internals private. | |||||
| * | proto: Remove no-longer needed Runtime argument | Gabriela Moldovan | 2025-10-21 | 1 | -13/+5 | |
| | | | | | | | | This is no longer used, and not having it makes the code less generic and easier to read, so I'm removing it for now. If we ever need it again, we can add it back. | |||||
| * | proto: Replace RelayReactor type-alias with struct | Gabriela Moldovan | 2025-10-21 | 1 | -23/+32 | |
| | | | | | | | This is the first step towards making `ForwardReactor` and `BackwardReactor` be siblings (rather than being in a primary-subordinate relationship). | |||||
| * | proto: Add spaces in docs to satisfy clippy | Gabriela Moldovan | 2025-10-21 | 1 | -3/+3 | |
| | | ||||||
| * | proto: Fix doc links post-refactoring | Gabriela Moldovan | 2025-10-21 | 2 | -3/+7 | |
| | | ||||||
| * | proto: Add a basic implementation for the relay reactor(s) | Gabriela Moldovan | 2025-10-21 | 2 | -37/+695 | |
| | | | | | | | | | | | | | | | | | | | | | | This sketches out the "dual" relay reactor implementation, which has: * a `ForwardReactor`, which forwards cells from the client to the exit * a `BackwardReactor`, which deals with streams, control messages, and forwarding cells from the exit to the client The `BackwardReactor` is actually the "primary" reactor. It's the interface we expose to the channel reactor (via the `RelayReactor` type-alias), and it is in charge of spawning the "secondary" `ForwardReactor` task (via its `run()` function). See the module-level docs from `tor_proto::relay::reactor` for more details on the inner workings of the two reactors. This commit also adds the incomplete skeleton of the circuit extension logic. Once #1599 is implemented, we'll be able to uncomment the commented code, or replace it, depending on what the corresponding channel reactor APIs look like. | |||||
| * | proto: Remove explicit returns to appease clippy | Gabriela Moldovan | 2025-10-21 | 1 | -6/+5 | |
| | | ||||||
| * | proto: Boilerplate for control command handling | Gabriela Moldovan | 2025-10-21 | 1 | -7/+29 | |
| | | | | | | We only have one command right now (`Shutdown`), so this is mostly just boilerplate. | |||||
| * | proto: s/channel_id/circ_id | Gabriela Moldovan | 2025-10-21 | 1 | -1/+1 | |
| | | ||||||
| * | proto: Replace DynTimeProvider with Runtime | Gabriela Moldovan | 2025-10-21 | 1 | -7/+9 | |
| | | | | | | We will need a handle to the runtime to spawn the "secondary" reactor from the main one. | |||||
| * | proto: Require that chan_provider is Send | Gabriela Moldovan | 2025-10-21 | 1 | -2/+2 | |
| | | ||||||
| * | proto: Use a broadcast channel for the shutdown handle | Gabriela Moldovan | 2025-10-21 | 1 | -5/+6 | |
| | | | | | | | There will soon be multiple systems that need to be notified of reactor shut down, so it's time to change this to a channel type with a cloneable receiver. | |||||
| * | proto: Move StreamMpsc{Sender,Receiver} to stream module (fmt) | Gabriela Moldovan | 2025-10-21 | 5 | -5/+5 | |
| | | ||||||
| * | proto: Move StreamMpsc{Sender,Receiver} to stream module | Gabriela Moldovan | 2025-10-21 | 8 | -11/+18 | |
| | | | | | These will be shared with the relay code. | |||||
| * | proto: remove extraneous blank line | Gabriela Moldovan | 2025-10-21 | 1 | -1/+0 | |
| | | ||||||
| * | proto: Remove silly TODO about outgoing chan mgmt | Gabriela Moldovan | 2025-10-21 | 1 | -3/+1 | |
| | | | | | | | The TODO is silly, because there will be no "outgoing channel map". There will be at most *one* outgoing channel, and that is represented by `Option<Outbound>`. | |||||
