<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/stream/raw.rs, branch arti-v1.4.5</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.4.5</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.4.5'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2025-06-26T17:03:13Z</updated>
<entry>
<title>tor-proto: rework `StreamReceiver` into a `futures::Stream`</title>
<updated>2025-06-26T17:03:13Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-06-26T04:45:27Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=3eabc89dc9a1f6be166c2a468785d7708aa3a5bb'/>
<id>urn:sha1:3eabc89dc9a1f6be166c2a468785d7708aa3a5bb</id>
<content type='text'>
Having this be a `futures::Stream` makes it nicer to work with. For
example we are able to remove a boxed future from `DataReaderState`,
which should be better for performance and makes the code simpler.

As mentioned in a previous commit when this type was named
`StreamReader`, this type is public in the API, but is not actually
accessible. As far as I can tell there is no way to construct it or
access it.
</content>
</entry>
<entry>
<title>Make `StreamTarget::send_sendme` non-async</title>
<updated>2025-06-26T17:03:08Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-06-26T04:02:53Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=eed047cbf888dc8f2d02c772e4b9a5154c77a3d4'/>
<id>urn:sha1:eed047cbf888dc8f2d02c772e4b9a5154c77a3d4</id>
<content type='text'>
There are some pros/cons to this change:

Pros:

1. The only remaining `await` in `StreamReceiver::recv` is for polling
   the receiver, which means we can turn the `StreamReceiver` into a
   `Stream` in a future commit.
2. We won't block the user from receiving messages while we wait for the
   circuit reactor to receive our SENDME message and send it on the
   outgoing channel.
3. The `StreamReceiver` doesn't really care if it can't send the SENDME.
   There isn't anything it can do, the circuit hop can go away for
   external reasons like a DESTROY message, and we still want to return
   all queued messages to the user anyways.

Cons:

1. If the `StreamReceiver` sends a SENDME request to the circuit
   reactor, and the circuit reactor fails to send the SENDME, there's no
   good way for the reactor to communicate this back to the
   `StreamReceiver`.
</content>
</entry>
<entry>
<title>tor-proto: rename `StreamReader` to `StreamReceiver`</title>
<updated>2025-06-26T17:01:22Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-06-26T03:20:38Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d633fbc26e84b190306998833f5c8a1e10b58e50'/>
<id>urn:sha1:d633fbc26e84b190306998833f5c8a1e10b58e50</id>
<content type='text'>
In rust, the typical nomenclature is to use "receiver" for channels, and
"reader" for byte streams. For example `mpsc::Receiver` for something
that returns objects and `AsyncRead` for something that reads bytes.

Since we also have a `DataReader` for reading bytes, I think renaming
this from `StreamReader` to `StreamReceiver` better describes what it is
(it's not a "reader" in the typical `Read`/`AsyncRead` sense).

This type is public in the API, but is not actually accessible. As far
as I can tell there is no way to construct it or access it.
</content>
</entry>
<entry>
<title>tor-proto: made `StreamTarget::send_sendme` async and fixed a TODO</title>
<updated>2025-03-24T13:59:09Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-03-17T18:30:56Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=009a325140bad4370e0770af83558e2f32ad4b53'/>
<id>urn:sha1:009a325140bad4370e0770af83558e2f32ad4b53</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-proto: Add a tunnel module.</title>
<updated>2025-02-20T20:15:12Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2025-02-13T16:58:04Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=31ee1dbbe88f92d99d66614d0625cb6e87d48edd'/>
<id>urn:sha1:31ee1dbbe88f92d99d66614d0625cb6e87d48edd</id>
<content type='text'>
Move StreamTarget to the tunnel module and the circuit module.

From now on streams will be implemented on tunnels, not circuits.

This moves `StreamTarget` to the tunnel module. A future change will
replace `ClientCirc` with `ClientTunnel` inside `StreamTarget`.

This is mostly code motion, best reviewed with `--color-moved`.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>proto: Use congestion control in circuit reactor</title>
<updated>2025-01-16T14:16:01Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2024-12-16T19:00:36Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=a8d9982af0ed29e389b2c2b7f8cc538ebf546bfc'/>
<id>urn:sha1:a8d9982af0ed29e389b2c2b7f8cc538ebf546bfc</id>
<content type='text'>
It is official, congestion control is now used at this commit by the
circuit reactor making circuit/sendme.rs unused. Will be removed with
another commit.

Related #534

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>tor-proto: Introduce type aliases for stream queues</title>
<updated>2024-10-02T14:15:56Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2024-09-26T16:55:39Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=1db1e62dea2ee4602dbb755c32cb6c8ce8cb7f32'/>
<id>urn:sha1:1db1e62dea2ee4602dbb755c32cb6c8ce8cb7f32</id>
<content type='text'>
This will make it easier to change their types.
</content>
</entry>
<entry>
<title>proto: Try to clarify why StreamReader has a StreamTarget.</title>
<updated>2024-05-29T11:28:05Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-05-28T20:42:20Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=b077b68e6dc9d426beebd84bd63382287c03b02f'/>
<id>urn:sha1:b077b68e6dc9d426beebd84bd63382287c03b02f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: Explicitly enforce maxima on SENDME windows.</title>
<updated>2024-05-14T14:36:05Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-05-14T14:36:05Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9ffbc63e97487263a8be6550952d01094e4b026d'/>
<id>urn:sha1:9ffbc63e97487263a8be6550952d01094e4b026d</id>
<content type='text'>
No actual bug here, just technical debt:

For `SendWindow`s, our tag system already ensured that we rejected
any SENDME that didn't correspond to an appropriate drain.  Still,
it doesn't hurt to check.

For `RecvWindow`s, it would have been a protocol violation if we
ever did this, but it makes sense to make it an internal error if we
try.

Part of #1383.
</content>
</entry>
<entry>
<title>Rename UnparsedRelayCell -&gt; UnparsedRelayMsg</title>
<updated>2024-03-12T15:58:12Z</updated>
<author>
<name>Jim Newsome</name>
<email>jnewsome@torproject.org</email>
</author>
<published>2024-03-04T17:17:41Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=190d1cba722c1ebe840eca2b06d82a89678847dc'/>
<id>urn:sha1:190d1cba722c1ebe840eca2b06d82a89678847dc</id>
<content type='text'>
For consistency with the terminology proposed in
https://gitlab.torproject.org/tpo/core/torspec/-/issues/253
</content>
</entry>
</feed>
