<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/semver.md, 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:56Z</updated>
<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: Add crate-level exports for two extra stream types (fmt)</title>
<updated>2026-06-17T13:38:44Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-17T13:31:26Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d305c6c0a201703ce14fbcfdce1864aeda9cc8dc'/>
<id>urn:sha1:d305c6c0a201703ce14fbcfdce1864aeda9cc8dc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove semver.md files post-release</title>
<updated>2026-06-01T18:24:24Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-01T18:24:24Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=37c22e7189b1ac2e339f66392dfaa14ad564caa6'/>
<id>urn:sha1:37c22e7189b1ac2e339f66392dfaa14ad564caa6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-proto: clean up `CIRCUIT_BUFFER_SIZE`</title>
<updated>2026-05-21T16:35:59Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2026-05-21T02:56:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6a9e07f8d42ebd6f698b0def041c5424cf2d42b8'/>
<id>urn:sha1:6a9e07f8d42ebd6f698b0def041c5424cf2d42b8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove semver.md files post-release</title>
<updated>2026-03-03T12:29:50Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-03-03T12:29:50Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=0a1f5c2e1d29500541d48400cf8f7d18023c4da0'/>
<id>urn:sha1:0a1f5c2e1d29500541d48400cf8f7d18023c4da0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: Remove unused ChannelBuilder</title>
<updated>2026-02-19T20:57:29Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-02-12T17:04:02Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=abca3daac8727ccc670417384a61b1a682d3fb9d'/>
<id>urn:sha1:abca3daac8727ccc670417384a61b1a682d3fb9d</id>
<content type='text'>
Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>proto: Rename CircSyncView to CircHopSyncView</title>
<updated>2026-02-16T15:24:51Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-02-12T19:10:58Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=a6b28b785a2d26e7b89c32ad1f957813d707d90b'/>
<id>urn:sha1:a6b28b785a2d26e7b89c32ad1f957813d707d90b</id>
<content type='text'>
And update the docs
</content>
</entry>
<entry>
<title>proto: Make ChannelProvider::get_or_launch() synchronous</title>
<updated>2026-02-04T19:43:05Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-02-04T19:43:05Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=f915165d78a742b05f8528ebc904e40e749cafe8'/>
<id>urn:sha1:f915165d78a742b05f8528ebc904e40e749cafe8</id>
<content type='text'>
This just removes an unnecessary `async`.
</content>
</entry>
<entry>
<title>release: Remove semver.md files from 2.0.0 release.</title>
<updated>2026-02-02T23:01:45Z</updated>
<author>
<name>Wesley Aptekar-Cassels</name>
<email>me@wesleyac.com</email>
</author>
<published>2026-02-02T20:21:45Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e448afc67c67bc67bf7daac90f8a2277b4fc84d6'/>
<id>urn:sha1:e448afc67c67bc67bf7daac90f8a2277b4fc84d6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chanmgr: Spawn task for ChannelProvider impl of get_or_launch()</title>
<updated>2026-01-13T18:46:18Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-01-08T18:15:14Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=0e9f9bc8b15831d1d1f3cfcfe25d810e3b0e6156'/>
<id>urn:sha1:0e9f9bc8b15831d1d1f3cfcfe25d810e3b0e6156</id>
<content type='text'>
To pull this off, ChannelProvider::get_or_launch() needed to change from
"&amp;self" to "self: Arc&lt;Self&gt;" so we could pass self to the spawned task.

This is fine as the caller of ChannelProvider (circuit reactor) has a
Arc&lt;ChanMgr&gt;.

This also removes the PhantomData for the runtime as we now actually use
it.

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