summaryrefslogtreecommitdiff
path: root/crates/tor-proto
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'ahf/version-bump' into 'main'Nick Mathewson2025-06-051-19/+19
|\ | | | | | | | | release: Bump versions to prepare for Arti 1.4.4. See merge request tpo/core/arti!3024
| * release: Bump all tor-/arti- crates to 0.31.0.Alexander Hansen Færøy2025-06-051-19/+19
| | | | | | | | | | | | | | | | This was done using: for crate in $(./maint/list_crates | grep -P '^tor-|^arti-'); do cargo set-version -p $crate 0.31.0 done
* | De-duplicate circuit ntorv3 extension generation code.Nick Mathewson2025-06-042-61/+40
|/ | | | Closes #1969.
* *: suppress cognitive_complexity warnings from nightlyNick Mathewson2025-05-291-0/+3
| | | | | | | | | | | | | Apparently clippy nightly is better (or worse?) about detecting complex functions than before, so I'm suppressing these warnings where they occur. I have mixed feelings about these warnings: On the plus side, they really do help to detect functions that are twistier than they need to be. On the minus side, they get confused by tracing macros, and the "allows" do pile up. But on the plus side, those "allows" do provide a way to find functions that need to be refactored, and they are never uglier than the functions they decorate.
* tor-proto: Remove already addressed TODO.Gabriela Moldovan2025-05-281-3/+0
| | | | | There's already a check right above the TODO that does what the TODO asks.
* tor-proto: Make Path::all_hops() return an iterator.Gabriela Moldovan2025-05-283-15/+13
| | | | This addresses one of the TODOs from `reactor::conflux`.
* tor-proto: Downgrade a few TOOD(conflux) to TODO.Gabriela Moldovan2025-05-282-3/+3
|
* tor-proto: Replace TODO(conflux) with TODO(#2017).Gabriela Moldovan2025-05-281-1/+1
| | | | | This is not a MUST for client-side conflux, so I'm filing it as tech debt.
* tor-proto: Add missing feature-gating to HopDetail::Virtual.Gabriela Moldovan2025-05-281-0/+1
|
* tor-proto: Avoid comparing virtual hops for now.Gabriela Moldovan2025-05-281-17/+22
| | | | | | We don't have a way to compare virtual hops (see #2016), and we don't yet support onion service conflux (see #2002), so let's defer this for now.
* tor-proto: Downgrade a TODO(conflux) to TODO.Gabriela Moldovan2025-05-281-1/+1
| | | | This is tech debt, and is not a MUST for conflux.
* tor-proto: Replace TOOD(conflux) with TODO(#1999).Gabriela Moldovan2025-05-281-1/+1
| | | | | We can tackle this later, after we finish addressing all the remaining `TODO(conflux)`.
* Merge branch 'proto-bench-visibility' into 'main'Nick Mathewson2025-05-2715-557/+385
|\ | | | | | | | | tor-proto: use the visibility crate for benchmarks See merge request tpo/core/arti!3010
| * proto: fix bench featuresLionel Goffaux2025-05-277-181/+187
| |
| * proto: remove unused cpu_time dev-dependencyLionel Goffaux2025-05-221-1/+0
| |
| * proto: remove bench pub wrappersLionel Goffaux2025-05-2214-409/+232
| |
* | ./maint/cargo_sort: Run cargo-sort on the entire workspace.Gabriela Moldovan2025-05-271-2/+11
|/ | | | | | | | | | | | | | | | | | | The [latest version] of `cargo-sort` is more opinionated than the previous one, and is now causing the `rust-checks` job to fail on `main`. This commit applies the fixes needed to satisfy the new `cargo-sort` rules. These changes were generated by running `cargo sort --workspace` several times, until `cargo sort --check --workspace` finally succeeded (it couldn't fix all the errors in one go, for some reason). I have omitted the changes `cargo-sort` made to the top-level `Cargo.toml`, to preserve the topological ordering of the workspace members. Closes #2014 [latest version]: https://github.com/DevinR528/cargo-sort/blob/f066ae80e5e6f5c1d8f0e2b8099461dcb97d9656/changelog.md#200
* Merge branch 'extend_ntor-fix' into 'main'Nick Mathewson2025-05-211-1/+1
|\ | | | | | | | | | | | | tor-proto: Prevent sink and rx from being dropped in-place. Closes #2005 See merge request tpo/core/arti!3005
| * tor-proto: Prevent sink and rx from being dropped in-place.Gabriela Moldovan2025-05-201-1/+1
| | | | | | | | | | | | | | | | | | This was supposed to be fixed in 164d6b4d6c5, but that change failed to bind `sink` and `rx in `futures::join!`, causing `sink` and `rx` to get dropped, which would, in turn, cause the channel and circuit reactors to shut down, sometimes leading to intermittent failures (#2005). Closes #2005
* | tor-proto: Add TODO about multipath rend circuits.Gabriela Moldovan2025-05-201-0/+6
| |
* | tor-proto: Clarify that we need HopLocation, not TargetHop.Gabriela Moldovan2025-05-201-2/+2
| | | | | | | | Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3002#note_3200935
* | tor-proto: Remove now-unused ConfluxSet::legs().Gabriela Moldovan2025-05-201-5/+0
| |
* | Revert "tor-proto: add a non-pub `ClientCirc::legs()` method"Gabriela Moldovan2025-05-202-32/+4
| | | | | | | | | | | | | | | | This reverts commit c2d9ea952b4dcb91d05ee754e8d1a6ec6a0689b2. `QueryLegs` is now unused. We also decided we won't need it for implementing `Tunnel::path_ref()` as we are keeping the `MutableState` between `ClientCirc` and the reactor (see !2996).
* | tor-proto: Remove multi-path check from allow_stream_requests() (fmt).Gabriela Moldovan2025-05-201-1/+8
| |
* | tor-proto: Remove multi-path check from allow_stream_requests().Gabriela Moldovan2025-05-203-23/+35
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, `ClientCirc:allow_stream_requests()` would return an error when called on a multi-path tunnel. My main reason for removing the conflux set length check is because it enables us to remove the `QueryLegs` control command (which is something we were planning on doing anyway). Note that now that we've removed `ClientCirc::legs(), there's no way for a multi-path `ClientCirc` to access its circuit legs, but that is fine, because it's currently impossible to build multi-path `ClientCirc`s in arti anyway. This issue will be addressed in the fork, in the new `ClientTunnel` type that will be used for multi-path tunnels (a `ClientCirc` will only ever be single-path, so it won't need to have a `legs()` function at all). I am also removing the `TODO(conflux)` that justifies the now-removed check, because it's outdated (nowadays the `CellHandlers` are shared between the tunnel reactor and its circuits). That said, we *still* don't support onion service conflux, but that will be tackled separately because there are a bunch of issues that still need to be resolved to make it work (which I'll document separately). Note that I've also made some changes to pass the `LegId` of the circuit that received the incoming stream request to `StreamReqInfo` and `StreamTarget`. This is in preparation for supporting multipath onion service conflux, and because the `HopLocation` from `StreamTarget` *needs* a `LegId`.
* proto: temporarily suppress warning; see #2003.Nick Mathewson2025-05-152-2/+3
|
* tor-proto: Make TunnelMutableState docs link to MutableState.Gabriela Moldovan2025-05-151-11/+3
| | | | | These `TunnelMutableState` impls just delegate to `MutableState`, so we might as well link to the corresponding docs.
* tor-proto: Add note about raciness of last_hop_num.Gabriela Moldovan2025-05-151-0/+15
|
* tor-proto: Add TODO about possibly replacing LegIdKey with UniqId.Gabriela Moldovan2025-05-151-0/+3
|
* tor-proto: Remove the CircuitSharedState type alias.Gabriela Moldovan2025-05-151-6/+2
| | | | Hiding the underlying type makes the code less readable.
* tor-proto: Clarify the MutableState::path() docs.Gabriela Moldovan2025-05-151-1/+1
|
* tor-proto: Update the TunnelMutableState when a circuit is removed.Gabriela Moldovan2025-05-152-17/+28
| | | | | | | | This is messy, because `ClientCirc::{path_ref, n_hops, ..}` become fallible (we can't unwrap the result, because when a circuit is closed, its state gets removed from the `TunnelSharedState`, but its `ClientCirc` handle continues to exist, so any attempt to retrieve the state will result in an `Err`).
* tor-proto: Rework MutableState to work with multi-path circuits.Gabriela Moldovan2025-05-154-31/+176
| | | | | | | | | | We now have a new `TunnelSharedState` type for storing the shared state of a tunnel. It consists of the `MutableState`s of all the circuits in the tunnel, which are shared between it and `Circuit` (the circuit subcomponent of the reactor). The `TunnelSharedState` itself is shared between `ConfluxSet` (which manages the `Circuits`), and `ClientCirc` (the reactor handle used to access information about circuits, such as their `Path`).
* tor-proto: Add From<LegIdKey> impl for LegId.Gabriela Moldovan2025-05-151-0/+6
| | | | This will simplify some callsites.
* tor-proto: Encapsulate MutableState operations inside impl.Gabriela Moldovan2025-05-153-42/+66
| | | | | Not locking the `MutableState` mutex outside of this impl makes it easier to see it's currently impossible deadlock.
* tor-proto: Rename MutableState to CircuitState.Gabriela Moldovan2025-05-153-9/+9
| | | | | | This renaming is in preparation for the addition of a newtype wrapper for what used to be `Mutex<MutableState>`. That newtype wrapper will be called `MutableState`.
* tor-proto: Make the MutableState internals private.Gabriela Moldovan2025-05-152-5/+18
|
* tor-proto: Remove deprecated ClientCirc functions.Gabriela Moldovan2025-05-152-48/+13
| | | | | | These functions have been deprecated for a while, and are now complicating the `MutableState` changes we need to do for #1840, so it seems like a good time to remove them.
* Merge branch 'proto-change-bench-neasurement' into 'main'Nick Mathewson2025-05-1413-199/+102
|\ | | | | | | | | tor-proto: change bench measurement See merge request tpo/core/arti!2998
| * proto: use consts for bench throuputsLionel Goffaux2025-05-1410-16/+25
| |
| * proto: fix doc mismatch in benchmarksLionel Goffaux2025-05-142-2/+2
| |
| * proto: fix doc typosLionel Goffaux2025-05-149-11/+11
| |
| * proto: change bench measurementLionel Goffaux2025-05-1310-190/+84
| |
* | All crates: bump rust-version to 1.83.Nick Mathewson2025-05-131-1/+1
|/
* proto: use of Aes{128,256}{Dec,Enc} in the benchmarksLionel Goffaux2025-05-086-24/+24
|
* proto: fix name mismatch in the bench utils docLionel Goffaux2025-05-083-10/+10
|
* proto: fix typo s(t)ateLionel Goffaux2025-05-086-15/+15
|
* proto: extend benchmarksLionel Goffaux2025-05-0816-338/+994
|
* Use simpler way to refer to last byte of tag.Nick Mathewson2025-05-071-1/+1
|
* proto: Update CGO test vectorsNick Mathewson2025-05-074-149/+146
| | | | | These were generated with an updated version of the python reference implementation.