<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/arti-relay/src, branch arti-v2.5.0</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v2.5.0</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v2.5.0'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2026-06-29T13:52:57Z</updated>
<entry>
<title>arti-relay: Link IncomingStreamRequestFilter in RequestFilter</title>
<updated>2026-06-29T13:52:57Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-25T18:00:22Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=1e91ba20bf4a62e8b20d379e89231ff105e33414'/>
<id>urn:sha1:1e91ba20bf4a62e8b20d379e89231ff105e33414</id>
<content type='text'>
Suggested by opara in
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/4145#note_3430815
</content>
</entry>
<entry>
<title>proto: Pass an IncomingStreamRequestFilter factory to the create handler</title>
<updated>2026-06-29T13:52:56Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-12T11:06:31Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6b1881af1785c61022a320c40399406e0682d37a'/>
<id>urn:sha1:6b1881af1785c61022a320c40399406e0682d37a</id>
<content type='text'>
This implements what we discussed in
`doc/dev/notes/relay-streams.md` (lines 218-234):

&gt; Currently, to allow incoming stream requests on a circuit,
&gt; you first need to call `RelayCirc::allow_stream_requests()`
&gt; to install a `CmdChecker` and `IncomingStreamRequestFilter`.
&gt; This is not ideal, because `allow_stream_requests()` will need to be
&gt; called unconditionally, on each `RelayCirc`,
&gt; right after it's created in the `CreateHandler` impl
&gt; (which in turn, would mean making `handle_create()` async too,
&gt; because `allow_stream_requests()` is async, which wouldn't be great).
&gt;
&gt; So, the first step here is to rework the `RelayCirc` API to make relay circuits
&gt; be constructable with a list of allowed `RelayCmd`s and `IncomingStreamRequestFilter`
&gt; from the get-go ([#2582]), and to get rid of `allow_stream_requests()`,
&gt; which will enable the `CREATE*` handler to remain non-`async`.
&gt;
&gt; In any case, the `CREATE*` handler will still require some changes,
&gt; because it needs to be initialized with an `IncomingStreamRequestFilter`,

I am not sure using an `IncomingStreamRequestFilter` "factory" is
necessarily the right approach here, but the circuit `Reactor`'s
constructor needs to take an `IncomingStreamRequestFilter`, and
`IncomingStreamRequestFilter` is not `Clone` (and FWIW, I think it's
better if we don't make it `Clone`).

One obvious limitation is that the `IncomingStreamRequestFilter` of the
circuit reactor is fixed for the entire lifetime of the circuit.
In practice, I don't think this is going to be a problem,
because the arti-relay `IncomingStreamRequestFilter` is only going
be used for

  * preventing single-hop exit streams
  * per-circuit rate-limiting.

Both of these checks will require the filter to have access to a recent
`NetDir`, which is straightforward if the filter has an Arc&lt;dyn
NetDirProvider&gt; (as mentioned in doc/dev/notes/relay-streams.md,
`NetDirProvider` has a handy non-async `timely_netdir()` function we can
use). And since these checks are based on consensus params, we don't
really need to ever update an already-built circuit with a new
`IncomingStreamRequestFilter` (because all `IncomingStreamRequestFilter`
will have the ability to obtain a fresh `NetDir` as needed).

Nevertheless, I left a TODO about this, because I expect this type to
change once we figure out all the other pieces needed for #1448.
</content>
</entry>
<entry>
<title>arti-relay: Add an unimplemented stream request filter</title>
<updated>2026-06-29T13:50:49Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-12T10:50:37Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c474f42085b70d54de5eda4f298d6be0731fabf3'/>
<id>urn:sha1:c474f42085b70d54de5eda4f298d6be0731fabf3</id>
<content type='text'>
This is currently just a placeholder that accepts all stream requests.

It will be fleshed out later, as part of #1448
</content>
</entry>
<entry>
<title>maint: Run maint/add_warning to deny string slices</title>
<updated>2026-06-09T15:36:01Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2026-06-09T15:36:01Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9f5752a77fb57052c06ead0eeae606831f1e8e97'/>
<id>urn:sha1:9f5752a77fb57052c06ead0eeae606831f1e8e97</id>
<content type='text'>
This commit executes maint/add_warning with the just added change to
deny string slices except in tests.

I recommend auditing this by checking out the previous commit followed
by running the script yourself and then verifying that the diff is
identical to this commit.

This commit makes cargo clippy fail.  We will add exceptions in the next
commit.
</content>
</entry>
<entry>
<title>relay: Remove docs type link that are outside scope</title>
<updated>2026-05-28T16:11:56Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-05-27T18:44:15Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=a4753d81830ab4841407cdb1403234a7dbe96afb'/>
<id>urn:sha1:a4753d81830ab4841407cdb1403234a7dbe96afb</id>
<content type='text'>
Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>relay: Recompute valid_until cache in view constructor</title>
<updated>2026-05-28T16:11:56Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-05-27T17:50:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c4f17bdf7b5932ba2815f3eac9c64b1ba447226f'/>
<id>urn:sha1:c4f17bdf7b5932ba2815f3eac9c64b1ba447226f</id>
<content type='text'>
The recompute of the valid_until cache is done now in the constructor of
FullKeyView so the view is directly usable once built.

Else, the caller always need to call the recompute function which is
error prone especially when used as a throwaway view.

Also, without this change, building the view and then attempting to log
the public keys would fail.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>relay: Introduce src/task/crypto/keys.rs</title>
<updated>2026-05-28T16:11:56Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-05-27T17:29:50Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=173e2086b305d5ee0c29ef6b31017d47af28224b'/>
<id>urn:sha1:173e2086b305d5ee0c29ef6b31017d47af28224b</id>
<content type='text'>
Move all key related action function to keys.rs in order to alleviate
crypto.rs.

The Reactor will get more functionnalities soon so cleanup.

No behavior change, just code movement.

Related to #2548
</content>
</entry>
<entry>
<title>relay: Rename try_rotate_keys_no_lock()</title>
<updated>2026-05-28T16:11:56Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-05-27T17:16:42Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=5de70ef036f84ed5c3d4d02207413c65545f8bd5'/>
<id>urn:sha1:5de70ef036f84ed5c3d4d02207413c65545f8bd5</id>
<content type='text'>
Remove the _no_lock() since no more locks now.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>relay: Make FullKeyView pub(super)</title>
<updated>2026-05-28T16:11:56Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-05-27T17:11:51Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c9c2e59e4439f0153bdeb6cf07c058c0e96abb09'/>
<id>urn:sha1:c9c2e59e4439f0153bdeb6cf07c058c0e96abb09</id>
<content type='text'>
Now, the FullKeyView is officially only seen by the crypto task.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>relay: Remove locking of FullKeyView</title>
<updated>2026-05-28T16:11:56Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-05-27T17:08:46Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=345662a072edc3868f16a116c83f9ca355b2f9f7'/>
<id>urn:sha1:345662a072edc3868f16a116c83f9ca355b2f9f7</id>
<content type='text'>
No need for the valid_until cache locking that used to ensure coherent
view accross tasks.

As we move towards having the FullKeyView be solely owned by the crypto
task, no need for locking.

Future commit will introduce a control command channel which will be
used to get keys for other tasks.

The valid_until cache is kept though because it helps with key lookups
to avoid walking all keys each time.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
</feed>
