<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/relay, 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>proto: Remove confusing blurb about IncomingStream handling</title>
<updated>2026-06-29T13:52:57Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-25T17:06:59Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=452009fdf4b997262a6e42d1df1b1235aabd7918'/>
<id>urn:sha1:452009fdf4b997262a6e42d1df1b1235aabd7918</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: Clarify wording in relay reactor constructor</title>
<updated>2026-06-29T13:52:57Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-25T16:31:19Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=1f66ce82758a58e7fb72d8354be03983c3cf3c03'/>
<id>urn:sha1:1f66ce82758a58e7fb72d8354be03983c3cf3c03</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: Say why INCOMING_BUFFER is set to STREAM_READER_BUFFER</title>
<updated>2026-06-29T13:52:57Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-25T15:02:12Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=cbb40a00d0d13175e5dbf69529e684f2da618d7f'/>
<id>urn:sha1:cbb40a00d0d13175e5dbf69529e684f2da618d7f</id>
<content type='text'>
</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>proto: Return IncomingStreams stream from relay reactor constructor (fmt)</title>
<updated>2026-06-29T13:50:49Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-24T09:44:46Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=5770784a8aece87dafe07585af237e2b496b421e'/>
<id>urn:sha1:5770784a8aece87dafe07585af237e2b496b421e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: Return IncomingStreams stream from relay reactor constructor</title>
<updated>2026-06-29T13:50:49Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-15T15:37:26Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=07755fcbd11311e155375927825de8b26fbe7824'/>
<id>urn:sha1:07755fcbd11311e155375927825de8b26fbe7824</id>
<content type='text'>
Part of #2582
</content>
</entry>
<entry>
<title>proto: Support passing a stream request filter to the reactor</title>
<updated>2026-06-29T13:50:49Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-12T10:03:02Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=60306abe64f00e5053c2728e4c884a6e3ff714b4'/>
<id>urn:sha1:60306abe64f00e5053c2728e4c884a6e3ff714b4</id>
<content type='text'>
Relay circuits always need a filter, so it's best to set it via the
constructor.

Part of #2582

Closes #2577
</content>
</entry>
<entry>
<title>tor-proto: add some comments about handshake server arguments</title>
<updated>2026-06-25T18:36:07Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2026-06-25T18:36:07Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d72bcbca51bf5ff1286f9d7aa9c6326534432f8e'/>
<id>urn:sha1:d72bcbca51bf5ff1286f9d7aa9c6326534432f8e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-proto: implement the ntor (non-v3) handshake</title>
<updated>2026-06-25T02:46:15Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2026-06-25T02:32:33Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=a38f27fd334cfea3cfa68f78802ee91eda825f23'/>
<id>urn:sha1:a38f27fd334cfea3cfa68f78802ee91eda825f23</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-proto: update a comment in `CreateRequestHandler`</title>
<updated>2026-06-25T02:27:55Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2026-06-25T02:27:55Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=1a8bc55df7d1441762bfcfd307df0997646262bf'/>
<id>urn:sha1:1a8bc55df7d1441762bfcfd307df0997646262bf</id>
<content type='text'>
</content>
</entry>
</feed>
