summaryrefslogtreecommitdiff
path: root/crates/tor-proto
Commit message (Collapse)AuthorAgeFilesLines
...
* protover, *: Add documentation about what "supported" means.Nick Mathewson2025-04-161-1/+2
|
* Add warnings about removing supported protocols.Nick Mathewson2025-04-161-0/+2
|
* New functions to report supported subprotocolsNick Mathewson2025-04-162-0/+43
| | | | | | | | | | | | | | | Part of #1849. Note that these functions are distributed across crates, so that if (in the future) we stop doing API breaks with every release, we will get the right outputs. Note also that these functions build the list of protocols out of specific symbolic features, rather than numbers: this makes it easier to avoid errors about "which feature was Relay=4 again", and easier to avoid accidentally referring to a protocol that doesn't exist, like "Consensus" (should be "Cons") or "HsDir" (case is wrong).
* proto: Create StreamTargets with the right RelayCellFormat.Nick Mathewson2025-04-164-8/+27
|
* cell, proto: Use correct Data sizes for v1 relay cellsNick Mathewson2025-04-163-16/+42
| | | | | | | | | | | | Since v1 cells have a longer tag, they can fit less data into a single cell. Ah well, that's the cost of improved security. The code in data.rs is a little wonky, in that it currently requires its buffer to be exactly the maximum size for a data cell. We have a TODO about fixing that in the future, but for now I've moved it to use a boxed slice rather than a boxed array. Part of #1944.
* proto: Use selected format when encoding messagesNick Mathewson2025-04-161-6/+11
|
* Add a RelayCellFormat argument to encode().Nick Mathewson2025-04-165-11/+20
| | | | | | | | | This will let us actually _send_ messages in the right format. This approach is not ideal for packed/fragmented messages; they will need a separate RelayCellEncoder. part of #1944.
* Note some places where we need updates for #1944.Nick Mathewson2025-04-164-2/+8
| | | | (Also note a couple of other CGO-related issues)
* proto: Avoid panic on non-existent hop numberNick Mathewson2025-04-111-1/+1
| | | | | | | | | | | | | In `send_relay_cell()` in `tunnel/reactor/circuit.rs`, replace an unconditional array access (which would cause a panic if `hop_num` were out-of-range) with a checked `get_mut()` call. It's not totally clear whether this can happen in practice, but in either case, an error is probably better than a panic. All of our other lookups in this vector are either checked, or more obviously infallible. Closes #1950.
* Allow StreamOps import to be unusedNick Mathewson2025-04-091-2/+8
| | | | | This comes up on OSX; I hadn't seen it before, so I assume it is new with Rust 1.86.
* tor-proto: Add TODO about using Itertools instead of open-coded impl.Gabriela Moldovan2025-04-081-0/+2
| | | | | This won't involve an extra dep, because we already use `itertools` throughout the codebase.
* tor-proto: Remove outdated TODO.Gabriela Moldovan2025-04-081-4/+0
| | | | | For service introduction circuits, we have `IptMsgHandler`, so we've already worked something out :)
* tor-proto: clean up after "ntor_v3" feature flag removalSteven Engler2025-04-011-2/+1
|
* tor-proto: removed "ntor_v3" feature flagSteven Engler2025-04-017-25/+1
| | | | ntor v3 is now always enabled.
* Remove semver.md files post-release.Gabriela Moldovan2025-04-012-2/+0
|
* Bump all the unstable tor- and arti- crates to 0.29.0.Gabriela Moldovan2025-03-311-18/+18
| | | | | | | | | | Done using: ``` for crate in $(./maint/list_crates | rg '^(tor|arti-)'); do cargo set-version -p $crate 0.29.0 done ```
* Bump the versions of the non-{arti-,tor-} crates.Gabriela Moldovan2025-03-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The non-{arti-,tor-} crates are: ``` ./maint/list_crates | rg -v '^(tor|arti)' oneshot-fused-workaround slotmap-careful test-temp-dir fslock-guard hashx equix caret fs-mistrust safelog retry-error ``` We split them in the following categories: * crates with no changes (no version bumps): ``` maint/changed_crates -v "arti-v$LAST_VERSION" 2>&1 >/dev/null | grep -i "no change" | grep -v '\(tor\|arti\)-' oneshot-fused-workaround: No change. slotmap-careful: No change. fslock-guard: No change. caret: No change. retry-error: No change. ``` * crates that only have non-functional changes (bump the patch version): - test-temp-dir - equix - fs-mistrust - safelog * crates where APIs were broken (bump minor): - hashx (`RngCore` impl for `SipRand`) The bumps from this commit were created using this script: ``` PATCH=" test-temp-dir equix fs-mistrust safelog " for crate in $PATCH; do cargo set-version --bump patch -p $crate; done MINOR=" hashx " for crate in $MINOR; do cargo set-version --bump minor -p $crate; done ```
* tor-proto: remove unnecessary `Option` from `circuit_action`Steven Engler2025-03-262-10/+9
|
* tor-proto: fix possible bug when there are no ready streamsSteven Engler2025-03-261-13/+21
|
* Merge branch 'circuit-action' into 'main'opara2025-03-252-16/+17
|\ | | | | | | | | tor-proto: simplify `ConfluxSet::circuit_action` See merge request tpo/core/arti!2884
| * tor-basic-utils: move `flatten` from tor-protoSteven Engler2025-03-251-10/+1
| | | | | | | | I also added an additional non-doc TODO comment.
| * tor-proto: simplify tunnel `run_once`Steven Engler2025-03-241-7/+1
| | | | | | | | As far as I can tell, the extra drop handling code isn't needed anymore.
| * tor-proto: remove `CircuitActionResult` aliasSteven Engler2025-03-241-4/+1
| | | | | | | | | | I think the return type is simplified enough now that we don't need this.
| * tor-proto: change `ConfluxSet::next_circ_action` to return a `Future`Steven Engler2025-03-242-6/+25
| | | | | | | | | | | | Now returns only the first item of the stream rather than the stream itself. We use this in `Reactor::run_once`, which means we only ever use the first item anyways.
| * tor-proto: rename `ConfluxSet::circuit_action` to `next_circ_action`Steven Engler2025-03-242-6/+6
| |
* | Merge branch 'circuit-cmd' into 'main'gabi-2502025-03-253-66/+155
|\ \ | |/ |/| | | | | tor-proto: Replace RunOnceCmdInner with CircuitCmd in Circuit impl See merge request tpo/core/arti!2881
| * tor-proto: Add a TODO about supporting incoming streams with conflux.Gabriela Moldovan2025-03-241-0/+1
| |
| * tor-proto: Clarify the semantics of various CircuitCmds.Gabriela Moldovan2025-03-241-3/+3
| | | | | | | | Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2881#note_3178624
| * tor-proto: Add a TODO about the unnecessary Vec allocations.Gabriela Moldovan2025-03-242-2/+11
| |
| * tor-proto: Add TODO about rethinking the circuit *Cmd enums.Gabriela Moldovan2025-03-241-0/+6
| |
| * tor-proto: s/CircuitAction::Single/CircuitAction::RunCmd.Gabriela Moldovan2025-03-243-8/+6
| | | | | | | | | | There is no `Multiple` counterpart in `CircuitAction`, so the `Single` variant name doesn't make much sense.
| * tor-proto: Remove now-unused leg_id argument.Gabriela Moldovan2025-03-242-7/+1
| | | | | | | | | | The `LegId` is now added by the caller, when converting the resulting `CircuitCmd`s to `RunOnceCmdInner`.
| * tor-proto: Add docs to SendRelayCell.Gabriela Moldovan2025-03-241-3/+3
| |
| * tor-proto: Replace RunOnceCmdInner with CircuitCmd where appropriate.Gabriela Moldovan2025-03-243-47/+61
| | | | | | | | | | `CircuitCmd`s are a subset of `RunOnceCmdInner`, and don't have a `LegId`.
| * tor-proto: Add CircuitCmd enum.Gabriela Moldovan2025-03-242-1/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A `CircuitCmd`, unlike `RunOnceCmdInner`, doesn't know anything about `LegId`s. The user of the `CircuitCmd`s is supposed to know the `LegId` of the circuit the `CircuitCmd` came from. This is necessary because circuits don't know (and can't know) their own `LegId`. The various `Circuit` operations (e.g. `handle_cell`) will soon be updated to return `CircuitCmd` instead of `RunOnceCmdInner` (because the `RunOnceCmdInner` variants will soon be updated to also have an associated `LegId`, and `Circuit`s don't have access to their `LegId`s). The calling code, which *does* know the `LegId`, will then map `CircuitCmd`s to `RunOnceCmdInner`.
| * tor-proto: Put the leg id of the circuit in CircuitAction::HandleCell.Gabriela Moldovan2025-03-232-7/+12
| | | | | | | | | | | | | | This tells the reactor which circuit leg the input message originated from. Addresses a TODO.
* | tor-proto: send errors to oneshot channel in more placesSteven Engler2025-03-241-16/+38
| |
* | tor-proto: made `StreamTarget::send_sendme` async and fixed a TODOSteven Engler2025-03-243-10/+28
| |
* | tor-proto: remove previously completed TODOsSteven Engler2025-03-241-21/+7
| |
* | tor-proto: fix small TODOSteven Engler2025-03-241-3/+1
|/
* proto: make padding::Parameters construction fallible.Nick Mathewson2025-03-184-23/+106
| | | | | | | The constructor for rand::distr::Uniform is now fallible, so it makes sense to bubble up its restrictions. This is a breaking change.
* squash! Upgrade rand dependency to 0.9.Nick Mathewson2025-03-181-1/+1
| | | | - The Rng::gen() functions have been renamed to Rng::random().
* squash! Upgrade rand dependency to 0.9.Nick Mathewson2025-03-181-3/+2
| | | | | | - `rand::thread_rng()` has been deprecated and renamed to `rand::rng()` (I missed these cases because they were from prelude::*)
* squash! Upgrade rand dependency to 0.9.Nick Mathewson2025-03-181-1/+2
| | | | - `Uniform::new_inclusive` is now fallible.
* squash! Upgrade rand dependency to 0.9.Nick Mathewson2025-03-181-4/+0
| | | | - `try_fill_bytes()` is no longer a member of RngCore.
* squash! Upgrade rand dependency to 0.9.Nick Mathewson2025-03-182-5/+5
| | | | - The rand::distributions module has been renamed to rand::distr
* squash! Upgrade rand dependency to 0.9.Nick Mathewson2025-03-1810-15/+15
| | | | - `rand::thread_rng()` has been deprecated and renamed to `rand::rng()`
* Upgrade rand dependency to 0.9.Nick Mathewson2025-03-181-2/+2
| | | | | | (Per discussion at #1774, we think the changes are acceptable.) This commit won't compile on its own; subsequent commits will fix it.
* tor-proto: make `Circuit::add_hop` fallibleSteven Engler2025-03-123-13/+28
|
* tor-proto: change `take_single_leg` to return `NotSingleLegError`Steven Engler2025-03-112-4/+3
|