summaryrefslogtreecommitdiff
path: root/crates/tor-proto
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge branch 'mockable-time' into 'main'David Goulet2025-06-253-7/+20
|\ \ | | | | | | | | | | | | tor-proto: Give Circuit a handle to the DynTimeProvider. See merge request tpo/core/arti!3063
| * | tor-proto: Use mockable runtime in congestion control RTT estimator (fmt).Gabriela Moldovan2025-06-231-1/+2
| | |
| * | tor-proto: Use mockable runtime in congestion control RTT estimator.Gabriela Moldovan2025-06-232-7/+13
| | |
| * | tor-proto: Give Circuit a handle to the DynTimeProvider.Gabriela Moldovan2025-06-232-0/+6
| |/ | | | | | | | | | | | | | | This will enable us to replace the calls to `Instant::now()` with `DynTimeProvider::now()` throughout the RTT estimator. This gives us the ability to mock the time, and test that conflux leg switching occurs as expected.
* | proto: Rewrite can_crosscheck_with_current_estimate for clarity.Gabriela Moldovan2025-06-251-1/+1
| | | | | | | | | | | | | | The expanded expression makes it easier to see that `can_crosscheck_with_current_estimate()` can never return `true` if `self.ewma_rtt` is `None`, and that the `expect()` from `is_clock_stalled()` cannot panic.
* | proto: Make RTT estimates default to None (fmt).Gabriela Moldovan2025-06-251-2/+6
| |
* | proto: Make RTT estimates default to None.Gabriela Moldovan2025-06-251-31/+48
| | | | | | | | | | | | | | | | | | | | The `RttEstimator` now uses `None` to represent not-yet-measured RTTs. Previously, all the measured RTTs defaulted to 0, in contradiction with the `RttEstimator::{min,ewma}_rtt_usec()` docs, which state that both functions are supposed to return `u32::MAX` if there is no estimate. Closes #2049
* | Merge branch 'fix-xon-xoff' into 'main'Nick Mathewson2025-06-251-1/+1
|\ \ | | | | | | | | | | | | tor-cell: Fix incorrect XON/XOFF cell command integers See merge request tpo/core/arti!3061
| * | tor-cell: fix incorrect XON/XOFF cell command integersSteven Engler2025-06-231-1/+1
| |/
* | tor-proto: Compile-time key length constant equality assertionhashcatHitman2025-06-241-6/+4
| | | | | | | | | | | | | | - Made an equality assertion between two constants compile-time, resolving a TODO. Signed-off-by: hashcatHitman <[email protected]>
* | tor-proto: Add missing word in conflux docs.Gabriela Moldovan2025-06-231-1/+1
| |
* | tor-proto: Fix typo in comment.Gabriela Moldovan2025-06-231-1/+1
|/
* tor-proto: use `DynamicRateLimitedWriter` in `DataWriter`Steven Engler2025-06-161-6/+17
| | | | This uses just a placeholder `Empty` stream for config updates.
* tor-proto: improve `TokioAsyncWrite` compat implSteven Engler2025-06-161-10/+6
| | | | | | We want the tokio trait to call into the futures trait, rather than having each trait duplicate the logic of calling into the inner writer. This is less error-prone.
* tor-proto: add `DynamicRateLimitedWriter`Steven Engler2025-06-164-2/+296
| | | | | This is a `Writer` rate limiter which can receive rate limit updates from a `Stream`.
* tor-proto: make `visibility` dependency always availableSteven Engler2025-06-161-3/+3
| | | | `RateLimitedWriter` will use this in a future commit.
* tor-proto: Get rid of unnecessary extra variable.Gabriela Moldovan2025-06-161-3/+1
|
* tor-proto: Adapt the circ mutable state to removal of LegId.Gabriela Moldovan2025-06-161-9/+7
| | | | | Circuits only have one identifier now, so we can remove the second, now-redundant ID.
* tor-proto: Replace LegId/LegIdKey with UniqId.Gabriela Moldovan2025-06-137-166/+137
| | | | Closes #1999
* tor-proto: Derive HasMemoryCost for UniqId.Gabriela Moldovan2025-06-131-1/+5
|
* tor-proto: Update doc links post-renaming.Gabriela Moldovan2025-06-131-1/+1
|
* tor-proto: Group conflux imports for consistency.Gabriela Moldovan2025-06-131-2/+1
|
* tor-proto: Rename function to clarify transition to a new tunnel (fmt).Gabriela Moldovan2025-06-132-2/+9
|
* tor-proto: Rename function to clarify transition to a new tunnel.Gabriela Moldovan2025-06-132-3/+4
|
* tor-proto: Fix up the circuit's tunnel ID after inserting into conflux set.Gabriela Moldovan2025-06-132-2/+4
| | | | | | | | | When adding new circuits to an existing tunnel, we need to fixup the internal TunnelId of those circuits (otherwise they will have the TunnelId of the old single-path "tunnel" reactor they were extracted from using `CtrlCmd::ShutdownAndReturnCircuit`). Spotted while writing some tests.
* tor-proto: Give ConfluxSet a TunnelId for logging purposes.Gabriela Moldovan2025-06-132-4/+14
|
* tor-proto: Use TunnelScopedCircId instead of UniqId for logging.Gabriela Moldovan2025-06-124-10/+12
|
* tor-proto: Add an identifier for a circuit within a tunnel.Gabriela Moldovan2025-06-121-0/+27
| | | | | | This type will help produce better logs (logging just the circuit ID would make it impossible to correlate said circuit with the tunnel it belongs to).
* tor-proto: Assign a separate identifier to the tunnel reactor.Gabriela Moldovan2025-06-122-20/+17
| | | | | | The plan is to reuse this identifier for the future tunnel reactor updates channel (a channel for sending tunnel status updates to a central consumer).
* tor-proto: Log channel, circuit, stream identifiers as structured fields.Gabriela Moldovan2025-06-129-72/+102
| | | | | | | | | | | | | | | | | This changes the `tor-proto` logs to not be prefixed with a channel/circuit/stream ID, but rather to have these IDs attached to the log as structured fields. This change is in preparation for the switch to using `TunnelId`s in the tunnel reactor instead of circuit `UniqId`s. The reason for the change to use structured fields is because future logs will likely need to log the `UniqId`s of the circuits in a tunnel, which will need to either be formatted somehow in the logs, or logged as a structured field (the latter seems like the better option, hence this preparatory change). IMO we should favor structured fields over formatted strings in the logs in general, but that is a bigger project, so I am only doing a spot fix for now.
* tor-proto: Add a new identifier type for tunnels.Gabriela Moldovan2025-06-121-0/+22
| | | | | | | | | | Currently, a tunnel is uniquely identified by the `UniqId` of the first circuit added to the tunnel. This works, but the double-meaning of the `UniqId` is bound to cause confusion in the future (because it blurs the distinction between tunnels and circuits). This introduces a new `TunnelId` type which will replace `UniqId` in the tunnel reactor.
* tor-proto: Write test for conflux cc algorithm validation.Gabriela Moldovan2025-06-111-12/+20
|
* tor-proto: Make conflux test CircParams configurable (fmt).Gabriela Moldovan2025-06-111-10/+7
|
* tor-proto: Make conflux test CircParams configurable.Gabriela Moldovan2025-06-111-5/+7
| | | | | We're about to add a test that involves circuits built using non-vegas `CircParams`.
* tor-proto: Check we negotiated the right cc algorithm for conflux.Gabriela Moldovan2025-06-112-6/+25
|
* tor-proto: Simplify leg_is_valid() implementation.Gabriela Moldovan2025-06-111-10/+10
| | | | | | This is about to become slightly more complex (we need to add a check for the cc algorithm of the last hop). This refactoring is in preparation for that.
* tor-proto: Add an accessor for the cc algorithm.Gabriela Moldovan2025-06-113-4/+27
| | | | | | Conflux is only supported when prop324 congestion control is enabled, so we need an accessor for the cc algorithm of a given circuit hop in order for the conflux code to be able to check *which* cc algorithm is in use.
* tor-proto: Remove no-longer needed clone()s.Gabriela Moldovan2025-06-114-7/+7
| | | | | | This doesn't really change anything, but removing the `.clone()` makes it a bit more obvious that copying the `*Params` is a lightweight operation.
* tor-proto: Derive Copy for FixedWindowParams.Gabriela Moldovan2025-06-111-1/+1
|
* tor-proto: Derive Copy for VegasParams.Gabriela Moldovan2025-06-111-2/+2
|
* tor-proto: Remove TODO about keeping empty conflux tunnel alive.Gabriela Moldovan2025-06-111-2/+0
| | | | | We don't plan to implement resumption any time soon, so let's just remove the TODO for now.
* tor-proto: Do not allow incoming streams on multipath tunnels.Gabriela Moldovan2025-06-111-13/+66
| | | | As mentioned in #2002, we don't yet support conflux for onion services.
* tor-proto: Remove unnecessary TODO(conflux).Gabriela Moldovan2025-06-111-1/+2
| | | | | It is the responsibility of the caller to wait until at least one of the legs completes the handshake.
* tor-proto: Address TODO about rejecting conflux cells on non-conflux circuits.Gabriela Moldovan2025-06-112-2/+34
|
* tor-proto: Remove TODO about SWITCH validation.Gabriela Moldovan2025-06-111-2/+0
| | | | | This will be covered by #2031 (we'll implement prop349 as part of the p112 work).
* tor-proto: Remove dead code from test.Gabriela Moldovan2025-06-111-24/+0
| | | | | | All of this is not needed, the actual test is in the loop below. (I accidentally left this in after refactoring the test in my last MR)
* tor-proto: Do not use fallback cc algorithm when testing.Gabriela Moldovan2025-06-101-3/+7
| | | | For conflux, we need to test against vegas.
* tor-proto: Get rid of unnecessary boolean param.Gabriela Moldovan2025-06-103-33/+15
|
* tor-proto: Link to ticket about forcing leg switching periodically.Gabriela Moldovan2025-06-101-1/+1
| | | | | I think this is going to be more of a tuning matter, so it's probably best tackled after we have a working conflux implementation.
* tor-proto: Link to ticket about making conflux UX configurable.Gabriela Moldovan2025-06-101-1/+1
|