summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | proto: Add a basic implementation for the relay reactor(s)Gabriela Moldovan2025-10-212-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 clippyGabriela Moldovan2025-10-211-6/+5
| | | | | |
| * | | | | proto: Boilerplate for control command handlingGabriela Moldovan2025-10-211-7/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We only have one command right now (`Shutdown`), so this is mostly just boilerplate.
| * | | | | proto: s/channel_id/circ_idGabriela Moldovan2025-10-211-1/+1
| | | | | |
| * | | | | proto: Replace DynTimeProvider with RuntimeGabriela Moldovan2025-10-211-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 SendGabriela Moldovan2025-10-211-2/+2
| | | | | |
| * | | | | proto: Use a broadcast channel for the shutdown handleGabriela Moldovan2025-10-211-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 Moldovan2025-10-215-5/+5
| | | | | |
| * | | | | proto: Move StreamMpsc{Sender,Receiver} to stream moduleGabriela Moldovan2025-10-218-11/+18
| | | | | | | | | | | | | | | | | | | | | | | | These will be shared with the relay code.
| * | | | | proto: remove extraneous blank lineGabriela Moldovan2025-10-211-1/+0
| | | | | |
| * | | | | proto: Remove silly TODO about outgoing chan mgmtGabriela Moldovan2025-10-211-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>`.
| * | | | | proto: Move hop settings into a shared moduleGabriela Moldovan2025-10-217-306/+328
| | | | | |
| * | | | | proto: Move streammap out of the client module (fmt)Gabriela Moldovan2025-10-213-5/+3
| | | | | |
| * | | | | proto: Add TODO about future code motionGabriela Moldovan2025-10-211-0/+4
| | | | | |
| * | | | | proto: Move halfstream under streammapGabriela Moldovan2025-10-213-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That way we don't need to make halfstream `pub(crate)` (we only really use it in streammap, and in the client reactor, because of the `handle_msg()` kludge).
| * | | | | proto: Move streammap out of the client moduleGabriela Moldovan2025-10-2110-13/+15
| | | | | |
| * | | | | proto: Move dumb pipes to top-lvl stream module (fmt)Gabriela Moldovan2025-10-217-7/+7
| | | | | |
| * | | | | proto: Move dumb pipes to top-lvl stream moduleGabriela Moldovan2025-10-2110-9/+10
| | | | | |
| * | | | | proto: Give the relay reactor a stream mapGabriela Moldovan2025-10-213-4/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need it for exits and leaky pipe. Part of #2212
| * | | | | proto: Rename RelayReactor to BackwardReactorGabriela Moldovan2025-10-211-5/+15
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "Backward" because this reactor will deal with relaying cells in the backward direction (from exit to client). In addition, this reactor will deal with stream handling and control/command messages. We will soon have another, "forward", reactor, relaying cells in the forward direction.
* | | | | Merge branch 'p2-lifetime' into 'main'David Goulet2025-10-213-59/+67
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | tor-netdoc: impl NetdocParseableFields for Lifetime See merge request tpo/core/arti!3379
| * | | | tor-netdoc: Lifetime impls: reindentIan Jackson2025-10-211-37/+37
| | | | |
| * | | | tor-netdoc: derive NetdocParseableFields for LifetimeIan Jackson2025-10-211-0/+4
| | | | |
| * | | | tor-netdoc: parse2: Provide documentation for derived Accumulator typesIan Jackson2025-10-211-0/+3
| | | | |
| * | | | tor-netdoc: Lifetime: change type of fieldsIan Jackson2025-10-212-8/+8
| | | | | | | | | | | | | | | | | | | | These fields aren't public so this doesn't have semver impacts.
| * | | | tor-netdoc: Lifetime: derive constructor and accessorsIan Jackson2025-10-211-20/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In a moment, we're going to want to transform the field arguments. That would leave us open to bugs like this: valid_after: valid_after.into(), fresh_until: fresh_until.into(), valid_until: valid_after.into(), We'll sort out the indentation later in this branch.
| * | | | tor-netdoc: Lifetime: Move some documentation to fieldsIan Jackson2025-10-211-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | This (briefly) regresses the documentation, but it's going to appear again when we derive the methods.
| * | | | tor-netdoc: Lifetime: Construct Lifetime struct earlierIan Jackson2025-10-211-6/+10
| |/ / /
* | | | Merge branch 'ci-specify-shellcheck-editorconfig-versions' into 'main'wesleyac2025-10-212-5/+17
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | CI: Specify versions for shellcheck and editorconfig-checker. Closes #2219 See merge request tpo/core/arti!3366
| * | | CI: Specify versions for shellcheck and editorconfig-checker.Wesley Aptekar-Cassels2025-10-162-5/+17
| | | | | | | | | | | | | | | | Fixes: #2219
* | | | Merge branch 'relay-errors' into 'main'David Goulet2025-10-203-142/+34
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | arti-relay: Refactor error handling See merge request tpo/core/arti!3374
| * | | | arti-relay: refactor error handlingSteven Engler2025-10-203-142/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We decided to move away from the `Error` + `ErrorDetail` all-encompassing enum design, and will use `anyhow::Error` in more places. When we need to handle specific errors, we will create smaller more-specific error types in those cases.
* | | | | Merge branch 'update-tasks-note' into 'main'David Goulet2025-10-201-0/+9
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | doc: Add note about relays enforcing protocol recommendations See merge request tpo/core/arti!3373
| * | | | doc: add note about relays enforcing proto recommendationsSteven Engler2025-10-201-0/+9
| | |_|/ | |/| |
* | | | Merge branch 'ticket_2210_squashed' into 'main'Nick Mathewson2025-10-201-2/+4
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use random_hostname() to pick an (E)SNI Closes #2210 See merge request tpo/core/arti!3372
| * | | | Use random_hostname() to pick an (E)SNINeel Chauhan2025-10-201-2/+4
| |/ / / | | | | | | | | | | | | | | | | | | | | Closes #2210. Edited-by: Nick Mathewson <[email protected]>
* | | | Merge branch 'ticket_2067' into 'main'Nick Mathewson2025-10-203-63/+60
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | Refactor: turn circ_extensions_from_settings into a method Closes #2067 See merge request tpo/core/arti!3344
| * | | Cleanup: Remove a variable renameNick Mathewson2025-10-201-4/+2
| | | |
| * | | Refactor: turn circ_extensions_from_settings into a methodNick Mathewson2025-10-203-63/+62
|/ / / | | | | | | | | | Closes #2067.
* | | Merge branch 'guardmgr-retry-logging' into 'main'wesleyac2025-10-162-8/+21
|\ \ \ | | | | | | | | | | | | | | | | Add more detail on retry times to GuardMgr logging See merge request tpo/core/arti!3153
| * | | tor-guardmgr: Ignore cognitive_complexity lint.Wesley Aptekar-Cassels2025-10-161-0/+1
| | | | | | | | | | | | | | | | | | | | While this is fairly nested, it's short, and most of the complexity is just in the logging code.
| * | | tor-guardmgr: Use humantime for some logging.Wesley Aptekar-Cassels2025-10-162-2/+2
| | | |
| * | | tor-guardmgr: Add retry time to guard failure warning.Wesley Aptekar-Cassels2025-10-161-7/+14
| | | | | | | | | | | | | | | | | | | | The "Next retry time unknown" message can't be hit right now, but could be if the code changes in the future.
| * | | tor-guardmgr: Include retry time in AllGuardsDown error message.Wesley Aptekar-Cassels2025-10-161-1/+6
| | | | | | | | | | | | | | | | | | | | I don't love shoving such a complicated expression in thiserror, but it seems nicer than writing the implementation by hand...
* | | | Merge branch 'ignore-watch-multiple-test' into 'main'gabi-2502025-10-161-0/+2
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | arti: Ignore reload_cfg::test::watch_multiple. See merge request tpo/core/arti!3364
| * | | arti: Ignore reload_cfg::test::watch_multiple.Wesley Aptekar-Cassels2025-10-161-0/+2
| |/ / | | | | | | | | | This is flaky, ignoring until #1607 is fixed.
* | | Merge branch 'parallelize-minimal-features-test' into 'main'wesleyac2025-10-162-2/+36
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | ci: Parallelize minimal-features-test Closes #2207 See merge request tpo/core/arti!3338
| * | | ci: Parallelize minimal-features-testWesley Aptekar-Cassels2025-10-162-2/+36
| |/ / | | | | | | | | | | | | | | | | | | 3 seems like a good number to start with, we can tune it later if needed. Fixes: #2207
* | | Merge branch 'cmd-checkers' into 'main'gabi-2502025-10-1614-64/+101
|\ \ \ | |/ / |/| | | | | | | | proto: Split out IncomingDataCmdChecker as a separate type See merge request tpo/core/arti!3348
| * | proto: Rename data cmd checkers to {Inbound,Outbound}DataCmdChecker (fmt)Gabriela Moldovan2025-10-161-1/+2
| | |