| Commit message (Collapse) | Author | Age | Files | Lines | ||
|---|---|---|---|---|---|---|
| ... | ||||||
| * | tor-proto: Write test for conflux cc algorithm validation. | Gabriela Moldovan | 2025-06-11 | 1 | -12/+20 | |
| | | ||||||
| * | tor-proto: Make conflux test CircParams configurable (fmt). | Gabriela Moldovan | 2025-06-11 | 1 | -10/+7 | |
| | | ||||||
| * | tor-proto: Make conflux test CircParams configurable. | Gabriela Moldovan | 2025-06-11 | 1 | -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 Moldovan | 2025-06-11 | 2 | -6/+25 | |
| | | ||||||
| * | tor-proto: Simplify leg_is_valid() implementation. | Gabriela Moldovan | 2025-06-11 | 1 | -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 Moldovan | 2025-06-11 | 3 | -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 Moldovan | 2025-06-11 | 4 | -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 Moldovan | 2025-06-11 | 1 | -1/+1 | |
| | | ||||||
| * | tor-proto: Derive Copy for VegasParams. | Gabriela Moldovan | 2025-06-11 | 1 | -2/+2 | |
| | | ||||||
| * | tor-proto: Remove TODO about keeping empty conflux tunnel alive. | Gabriela Moldovan | 2025-06-11 | 1 | -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 Moldovan | 2025-06-11 | 1 | -13/+66 | |
| | | | | | As mentioned in #2002, we don't yet support conflux for onion services. | |||||
| * | tor-proto: Remove unnecessary TODO(conflux). | Gabriela Moldovan | 2025-06-11 | 1 | -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 Moldovan | 2025-06-11 | 2 | -2/+34 | |
| | | ||||||
| * | tor-proto: Remove TODO about SWITCH validation. | Gabriela Moldovan | 2025-06-11 | 1 | -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 Moldovan | 2025-06-11 | 1 | -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 Moldovan | 2025-06-10 | 1 | -3/+7 | |
| | | | | | For conflux, we need to test against vegas. | |||||
| * | tor-proto: Get rid of unnecessary boolean param. | Gabriela Moldovan | 2025-06-10 | 3 | -33/+15 | |
| | | ||||||
| * | tor-proto: Link to ticket about forcing leg switching periodically. | Gabriela Moldovan | 2025-06-10 | 1 | -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 Moldovan | 2025-06-10 | 1 | -1/+1 | |
| | | ||||||
| * | tor-proto: Shut down the reactor on conflux handshake proto violation. | Gabriela Moldovan | 2025-06-10 | 2 | -24/+33 | |
| | | | | | | | | Instead of only shutting down the leg on which the protocol violation occurred, it seems better to shut down the entire tunnel (because the other endpoint, i.e. the exit, is the cause of the violation, so we should probably avoid using it entirely). | |||||
| * | tor-proto: Convert some TODO(conflux)s to TODO(#2031). | Gabriela Moldovan | 2025-06-10 | 2 | -3/+3 | |
| | | ||||||
| * | tor-proto: Add tests for conflux handling in the circuit reactor. | Gabriela Moldovan | 2025-06-10 | 2 | -1/+755 | |
| | | ||||||
| * | tor-proto: Pass CircParameters to newcirc_ext (fmt). | Gabriela Moldovan | 2025-06-10 | 1 | -2/+18 | |
| | | ||||||
| * | tor-proto: Pass CircParameters to newcirc_ext. | Gabriela Moldovan | 2025-06-10 | 1 | -4/+4 | |
| | | ||||||
| * | tor-proto: Make the test circuit UniqId configurable. | Gabriela Moldovan | 2025-06-10 | 1 | -3/+5 | |
| | | | | | The `UniqId` matters for multipath tunnels. | |||||
| * | tor-proto: Make the hops of newcirc_ext() configurable. | Gabriela Moldovan | 2025-06-10 | 1 | -10/+33 | |
| | | | | | | This preserves the existing behavior of `newcirc()` (which creates 3-hop circuits, where each hop has the same `HopDetail`). | |||||
| * | tor-proto: Make fake hop peer_id configurable (fmt). | Gabriela Moldovan | 2025-06-10 | 2 | -10/+10 | |
| | | ||||||
| * | tor-proto: Make fake hop peer_id configurable. | Gabriela Moldovan | 2025-06-10 | 4 | -9/+14 | |
| | | | | | | For the conflux tests, we need to be able to create circuits with fake hops that have different peer_ids. | |||||
| * | tor-proto: Disarm conflux handshake timeout after circuit is linked. | Gabriela Moldovan | 2025-06-10 | 1 | -4/+8 | |
| | | | | | | Fixes a bug causing the conflux handshake to always fail with `ConfluxHandshakeError::Timeout`. | |||||
| * | tor-proto: Insert missing word in docs. | Gabriela Moldovan | 2025-06-10 | 1 | -1/+1 | |
| | | ||||||
| * | tor-proto: Avoid switching legs if we're not sending. | Gabriela Moldovan | 2025-06-10 | 3 | -71/+77 | |
| | | ||||||
| * | tor-proto: Remove already addressed TODO. | Gabriela Moldovan | 2025-06-10 | 1 | -1/+0 | |
| | | | | | | This was addressed a while ago, in 09a601aed9aac9effa230701b02ba865b5754469 | |||||
| * | tor-proto: Fix bug where the join point is read from the wrong list. | Gabriela Moldovan | 2025-06-10 | 1 | -1/+1 | |
| | | | | | | | | | If we reach this point and the join point is `None`, it means the conflux set has so far consisted of a single leg. This means we need to assign the last hop of the (only) leg to the join point. This initial leg is in `self.circuits`, not in `legs` (`legs` is the list of *new* legs that are being added to the set). | |||||
| * | tor-proto: Add some conflux-related logging. | Gabriela Moldovan | 2025-06-10 | 2 | -1/+27 | |
| | | ||||||
| * | tor-proto: Derive Display for RemoveLegReason. | Gabriela Moldovan | 2025-06-10 | 1 | -1/+4 | |
| | | | | | This will be needed for logging purposes. | |||||
| * | tor-proto: Fix typo in comment. | Gabriela Moldovan | 2025-06-10 | 1 | -1/+1 | |
| | | ||||||
| * | tor-proto: Remove single-path check from primary_leg_mut. | Gabriela Moldovan | 2025-06-10 | 1 | -3/+4 | |
| | | ||||||
| * | tor-proto: Also count the *existing* unlinked legs. | Gabriela Moldovan | 2025-06-10 | 2 | -1/+21 | |
| | | | | | | | | | | | `num_legs` keeps track of the number of legs that have an in-progress conflux handshake. This updates the calculation to count the "initial" leg of the tunnel too (because when converting a single-path reactor to a multi-path one, the existing, "initial" circuit needs to complete the conflux handshake too). | |||||
| * | tor-proto: Allow LINK to be sent regardless of conflux pendingness. | Gabriela Moldovan | 2025-06-10 | 2 | -9/+17 | |
| | | | | | | If we don't make an exception for LINK cells, we'll never be able to send them, and the circuits will be forever "pending conflux handshake". | |||||
| * | tor-proto: Ensure the existing leg gets a ConfluxMsgHandler. | Gabriela Moldovan | 2025-06-10 | 1 | -16/+24 | |
| | | | | | | | This fixes a bug where we'd fail to set the `ConfluxMsgHandler` for the initial leg of the `ConfluxSet`, when converting the set from a single-path set to a multi-path one. | |||||
| * | tor-proto: Relax conflux set leg validation. | Gabriela Moldovan | 2025-06-10 | 1 | -47/+12 | |
| | | | | | | | As per the replacement rules from prop354. Except we can't actually enforce the replacement rules at this level (they'll have to be enforced by the caller). | |||||
| * | tor-proto: Update TODO to say it's about conflux tuning. | Gabriela Moldovan | 2025-06-10 | 1 | -3/+5 | |
| | | ||||||
| * | tor-proto: Downgrade a few more TODO(conflux) to TODO. | Gabriela Moldovan | 2025-06-10 | 2 | -5/+5 | |
| | | | | | | We need to eventually tackle all of these, but none of them are critical, so I propose we downgrade them to `TODO`. | |||||
| * | tor-proto: Ensure all conflux legs share the same join point stream map. | Gabriela Moldovan | 2025-06-10 | 2 | -6/+49 | |
| | | | | | | | | | I really dislike that we're exposing the stream map this way. Ideally we'd have some way of sharing the stream maps without exposing the `StreamMap` in `reactor::conflux`. Closes #2011 | |||||
| * | tor-proto: Add a TODO about a further refactoring. | Gabriela Moldovan | 2025-06-10 | 1 | -0/+2 | |
| | | ||||||
| * | tor-proto: Fixup CircHop docs post-refactoring. | Gabriela Moldovan | 2025-06-10 | 1 | -5/+6 | |
| | | ||||||
| * | tor-proto: Remove now-addressed TODO. | Gabriela Moldovan | 2025-06-10 | 1 | -4/+0 | |
| | | ||||||
| * | tor-proto: Introduce CircHopList, hide CircHop internals. | Gabriela Moldovan | 2025-06-10 | 3 | -244/+399 | |
| | | | | | Most of this is code motion, I recommend reviewing with `--color-moved`. | |||||
| * | tor-proto: Move CircHop to a separate module. | Gabriela Moldovan | 2025-06-10 | 2 | -163/+187 | |
| | | | | | | | | | | | | | This helps hide the `CircHop` internals, and is the first step towards providing a safer API that aims to reduce contention and prevent deadlocking on the stream map mutex. This change is also in preparation for implementing special handling for the join point of a conflux tunnel (which will involve adding a new `CircHop` API for sharing the stream map of another `CircHop`). I recommend reviewing this diff with `--color-moved`. | |||||
| * | HopSettings: Note relay usage. | Nick Mathewson | 2025-06-10 | 1 | -0/+3 | |
| | | ||||||
