summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge branch 'hs-interval-min' into 'main'Nick Mathewson2025-06-101-1/+1
|\ \ | | | | | | | | | | | | tor-netdir: decrease minimum hsdir_interval from 30 to 5 See merge request tpo/core/arti!3042
| * | tor-netdir: decrease minimum hsdir_interval from 30 to 5Jim Newsome2025-06-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This matches the spec change: <https://gitlab.torproject.org/tpo/core/torspec/-/merge_requests/406> Progress on: <https://gitlab.torproject.org/tpo/core/chutney/-/issues/40038>
* | | Merge branch 'hickory-upgrade' into 'main'Nick Mathewson2025-06-101-1/+1
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | Upgrade dependency to hickory-proto 0.25.2 Closes #1982 See merge request tpo/core/arti!3038
| * | Upgrade dependency to hickory-proto 0.25.2Nick Mathewson2025-06-091-1/+1
| | | | | | | | | | | | Closes #1982.
* | | 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
| | |
* | | tor-proto: Shut down the reactor on conflux handshake proto violation.Gabriela Moldovan2025-06-102-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 Moldovan2025-06-102-3/+3
| | |
* | | tor-proto: Add tests for conflux handling in the circuit reactor.Gabriela Moldovan2025-06-102-1/+755
| | |
* | | tor-proto: Pass CircParameters to newcirc_ext (fmt).Gabriela Moldovan2025-06-101-2/+18
| | |
* | | tor-proto: Pass CircParameters to newcirc_ext.Gabriela Moldovan2025-06-101-4/+4
| | |
* | | tor-proto: Make the test circuit UniqId configurable.Gabriela Moldovan2025-06-101-3/+5
| | | | | | | | | | | | The `UniqId` matters for multipath tunnels.
* | | tor-proto: Make the hops of newcirc_ext() configurable.Gabriela Moldovan2025-06-101-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 Moldovan2025-06-102-10/+10
| | |
* | | tor-proto: Make fake hop peer_id configurable.Gabriela Moldovan2025-06-104-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 Moldovan2025-06-101-4/+8
| | | | | | | | | | | | | | | Fixes a bug causing the conflux handshake to always fail with `ConfluxHandshakeError::Timeout`.
* | | tor-proto: Insert missing word in docs.Gabriela Moldovan2025-06-101-1/+1
| | |
* | | tor-proto: Avoid switching legs if we're not sending.Gabriela Moldovan2025-06-103-71/+77
| | |
* | | tor-proto: Remove already addressed TODO.Gabriela Moldovan2025-06-101-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 Moldovan2025-06-101-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 Moldovan2025-06-102-1/+27
| | |
* | | tor-proto: Derive Display for RemoveLegReason.Gabriela Moldovan2025-06-101-1/+4
| | | | | | | | | | | | This will be needed for logging purposes.
* | | tor-proto: Fix typo in comment.Gabriela Moldovan2025-06-101-1/+1
| | |
* | | tor-proto: Remove single-path check from primary_leg_mut.Gabriela Moldovan2025-06-101-3/+4
| | |
* | | tor-proto: Also count the *existing* unlinked legs.Gabriela Moldovan2025-06-102-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 Moldovan2025-06-102-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 Moldovan2025-06-101-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 Moldovan2025-06-101-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 Moldovan2025-06-101-3/+5
| | |
* | | tor-proto: Downgrade a few more TODO(conflux) to TODO.Gabriela Moldovan2025-06-102-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 Moldovan2025-06-102-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 Moldovan2025-06-101-0/+2
| | |
* | | tor-proto: Fixup CircHop docs post-refactoring.Gabriela Moldovan2025-06-101-5/+6
| | |
* | | tor-proto: Remove now-addressed TODO.Gabriela Moldovan2025-06-101-4/+0
| | |
* | | tor-proto: Introduce CircHopList, hide CircHop internals.Gabriela Moldovan2025-06-103-244/+399
| | | | | | | | | | | | Most of this is code motion, I recommend reviewing with `--color-moved`.
* | | tor-proto: Move CircHop to a separate module.Gabriela Moldovan2025-06-102-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`.
* | | Merge branch 'circparam_cleanup' into 'main'Nick Mathewson2025-06-1012-109/+214
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Initial refactoring on CircParameters Closes #1967 and #1968 See merge request tpo/core/arti!3021
| * | | HopSettings: Note relay usage.Nick Mathewson2025-06-101-0/+3
| | | |
| * | | Avoid a bug with HopSettingsNick Mathewson2025-06-102-5/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When negotiation won't occur, we need to represent the fact by disabling any settings that would depend on negotiation. Otherwise we'll wind up with the client thinking everything was supported, and the relay thinking that nothing is.
| * | | Clarify HopSettings documentation.Nick Mathewson2025-06-101-3/+7
| | | |
| * | | Renamed NegotiatedHopSettings -> HopSettingsNick Mathewson2025-06-104-36/+33
| | | |
| * | | Clarify documentation for from_params_and_caps.Nick Mathewson2025-06-101-1/+6
| | | |
| * | | Clarify per-circuitness of CircParametersNick Mathewson2025-06-101-1/+7
| | | |
| * | | proto: Rename a pair of internal functionsNick Mathewson2025-06-103-16/+14
| | | |
| * | | Add a semver file for tor-proto changesNick Mathewson2025-06-101-0/+4
| | | |
| * | | proto: Refactor cc fallback.Nick Mathewson2025-06-104-19/+27
| | | | | | | | | | | | | | | | | | | | The fallback CC algorithm is _always_ fixed-window, and we should only use it when the selected CC algorithm is not supported.
| * | | Move responsibility for choosing extensions into tor-protoNick Mathewson2025-06-103-25/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now tor-circmgr no longer needs to check which Protover capabilities are enabled, or construct a separate CircParameters for each hop. Instead, tor-proto decides whether to use the fallback CC mode, based on whether the target supports FLOWCTRL_CC. Closes #1967.
| * | | proto: Move NegotiatedHopSettings to a higher levelNick Mathewson2025-06-108-61/+97
| | | | | | | | | | | | | | | | | | | | | | | | We will construct this object based on the circuit parameters _and_ on the target's supported protocol versions, so we need to do so when we have both pieces of info.