summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | 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`.
* Merge branch 'todo1' into 'main'Ian Jackson2025-05-201-78/+57
|\ | | | | | | | | arti: Fix TODO + Minor Refactor See merge request tpo/core/arti!2935
| * arti: cfg::test Rework refactorplaybahn2025-05-191-9/+8
| |
| * arti: cfg::test: Fix TODO + Minor refactorplaybahn2025-04-261-76/+56
| |
* | Merge branch 'arti-ureq-remove-early-return' into 'main'Ian Jackson2025-05-192-5/+1
|\ \ | | | | | | | | | | | | | | | | | | arti-ureq: Remove obsolete early return in await_input Closes #1952 See merge request tpo/core/arti!2997
| * | arti-ureq: Remove obsolete early return in await_inputNiel Duysters2025-05-192-5/+1
| | |
* | | *: use std::io::Error::other in many placesNick Mathewson2025-05-1512-39/+19
| | | | | | | | | | | | | | | | | | | | | The `IoError::other` function is an easier way to say `IoError::new(IoErrorKind::Other, ...)`. It's been around since 1.74, but clippy started warning about the more verbose version in 1.87.
* | | arti: resolve a variant-size-difference warning.Nick Mathewson2025-05-152-2/+2
| | |
* | | rtmock: use Option::replace instead of mem::replaceNick Mathewson2025-05-151-8/+6
| | | | | | | | | | | | | | | Option::replace has been around since 1.31, but the clippy warning is new.
* | | proto: temporarily suppress warning; see #2003.Nick Mathewson2025-05-152-2/+3
| | |
* | | netdir: fix warning about an opportunity to use saturating_subNick Mathewson2025-05-151-5/+1
| | |
* | | guardmgr: Fix clippy warning about needlessly owned cow.Nick Mathewson2025-05-151-1/+1
| | |
* | | tor-proto: Future-proof some comments about path_ref() errors.Gabriela Moldovan2025-05-151-2/+2
| | | | | | | | | | | | Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2996#note_3199590
* | | tor-proto: Return Error::Protocol if ClientCirc accessors return an error.Gabriela Moldovan2025-05-151-32/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `ClientCirc` accessors will only return an error if the underlying circuit is closed, so it doesn't make sense to map these errors to `Bug`. Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2996#note_3199072 and https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2996#note_3199073
* | | 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-1510-38/+88
| | | | | | | | | | | | | | | | | | | | | | | | 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
| | |
* | | Merge branch 'remove-deprecated' into 'main'gabi-2502025-05-152-48/+13
|\ \ \ | | | | | | | | | | | | | | | | tor-proto: Remove deprecated ClientCirc functions. See merge request tpo/core/arti!2995
| * | | 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.
* | | | tor-basic-utils: reword `semver.md` entrySteven Engler2025-05-151-1/+4
| | | |
* | | | tor-linkspec,tor-basic-utils: remove deprecated `empty_iterator()` methodSteven Engler2025-05-144-23/+3
|/ / / | | | | | | | | | | | | | | | This method has always been deprecated, so it's not a big deal to remove. It can be replaced with the corresponding iterators's `Default` implementation.
* | | 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
| |/ /
* | | Merge branch 'msrv-1.83' into 'main'gabi-2502025-05-1467-75/+69
|\ \ \ | |/ / |/| | | | | | | | | | | | | | Update MSRV to 1.83; bump gitlab-ci recent-image to 1.86. Closes #1869 See merge request tpo/core/arti!2999
| * | Resolve clippy warnings from 1.83Nick Mathewson2025-05-137-15/+9
| | | | | | | | | | | | | | | Now that our MSRV is 1.83, clippy is happy to make more recommendations for us.
| * | All crates: bump rust-version to 1.83.Nick Mathewson2025-05-1360-60/+60
| | |
* | | arti: test: Refactor arti integration testhjrgrn2025-05-125-2/+157
|/ / | | | | | | | | | | | | * arti: test: Restructure tests directory * arti: dep: Add assert_cmd dev-dependency * arti: test: Update README * doc: Fix hsc documentation
* | 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.
* | proto: Clear low 6 bits of counter in CGO PRF.Nick Mathewson2025-05-071-3/+4
| | | | | | | | See torspec#332.
* | cell: Teach extlist definition macro to make conditional extensionsNick Mathewson2025-05-072-1/+7
| | | | | | | | | | We need the macro to propagate only certain #[meta] values to all places where a case is used.
* | cell: Implement SubprotocolRequest extension from prop346.Nick Mathewson2025-05-072-1/+139
| | | | | | | | Part of #1945.
* | protover: New `NumberedSubver` to represent a subprotocol capNick Mathewson2025-05-072-2/+84
| | | | | | | | | | This type differs from `NamedSubver` in that the represented subprotocol capability isn't necessarily recognized or valid.
* | protover: Change ProtoKind to be a u8Nick Mathewson2025-05-072-2/+4
| | | | | | | | | | It is not remotely close to exhausting a u8, and several of our protocols expect it to be expressible as one.