<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/tunnel.rs, branch arti-v1.4.6</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.6</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.4.6'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2025-07-23T14:58:47Z</updated>
<entry>
<title>proto: Take format+crypto settings from HopSettings</title>
<updated>2025-07-23T14:58:47Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-06-10T23:55:45Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=87b5c7ed464a75c19d7943cc31936146bbb0dace'/>
<id>urn:sha1:87b5c7ed464a75c19d7943cc31936146bbb0dace</id>
<content type='text'>
Since these will be negotiated (or determined as part of negotiation)
they belong in HopSettings.
</content>
</entry>
<entry>
<title>tor-proto: add the `XonXoffReader` and connect it to the reactor</title>
<updated>2025-07-17T18:01:47Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-17T05:47:08Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=ac0a34306105bb003573a854c64eedc9cefac51e'/>
<id>urn:sha1:ac0a34306105bb003573a854c64eedc9cefac51e</id>
<content type='text'>
The idea here is that the reactor builds an `XonXoffReaderCtrl` for the
new stream, and the `XonXoffReaderCtrl` can receive notifications from
the reactor's `StreamFlowControl`. The `XonXoffReaderCtrl` can be
combined with any `AsyncRead` to build a `XonXoffReader`, essentially
wrapping the `AsyncRead` with a type that handles XON/XOFF flow control.
Essentially, the reactor gives you a type that allows you to add
XON/XOFF flow control support to any `AsyncRead`.

We will add this `XonXoffReader` to the `DataReader` in a future commit.
</content>
</entry>
<entry>
<title>tor-proto: add plumbing for sending XON</title>
<updated>2025-07-17T18:01:47Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-16T19:48:06Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=4bcfcc3cae31f901e828369383e4660778eaa8c6'/>
<id>urn:sha1:4bcfcc3cae31f901e828369383e4660778eaa8c6</id>
<content type='text'>
Nothing actually causes an XON to be sent yet. But this adds the code so
that anything holding the `StreamTarget` can request to send an XON.
</content>
</entry>
<entry>
<title>tor-proto: adjust `CtrlMsg::SendSendme` and rename</title>
<updated>2025-07-15T05:33:24Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-14T18:04:30Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=0c04fe1d8ac07aec55e450abb6d9ddc5c8b0726e'/>
<id>urn:sha1:0c04fe1d8ac07aec55e450abb6d9ddc5c8b0726e</id>
<content type='text'>
This allows us to extend the command to implement different flow control
methods. We could add new command variants for new flow control methods
instead, but I think it makes sense to have them be a single command as
they will always have a stream ID / hop location in common. This also
helps us keep the flow control logic in one place.
</content>
</entry>
<entry>
<title>tor-proto: added TODOs for making rate limit stream optional</title>
<updated>2025-07-10T00:26:23Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-10T00:26:23Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=11a4ee07ab487c34cb6974c9eda4c4c5d2dd8d5e'/>
<id>urn:sha1:11a4ee07ab487c34cb6974c9eda4c4c5d2dd8d5e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-proto: establish channel for rate limit updates</title>
<updated>2025-07-07T17:12:05Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-06-16T22:28:16Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=dce923d2010f66127a5a68b127778366ef517624'/>
<id>urn:sha1:dce923d2010f66127a5a68b127778366ef517624</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-proto: improve documentation for `StreamTarget::send_sendme`</title>
<updated>2025-06-26T17:26:49Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-06-26T17:26:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=a93d9f5ff08242d84373f988fc7659fc7cbd4f0f'/>
<id>urn:sha1:a93d9f5ff08242d84373f988fc7659fc7cbd4f0f</id>
<content type='text'>
</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>hsservice: Stop using HopNum and use TargetHop</title>
<updated>2025-06-26T14:18:30Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2025-06-25T15:00:25Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=611a35888fc2780d7cca31f0a3b7b1b88ccf8079'/>
<id>urn:sha1:611a35888fc2780d7cca31f0a3b7b1b88ccf8079</id>
<content type='text'>
This requires some changes to the tor-proto crate to handle the inbound
TargetHop from the HS subsystem and then resolve it into a HopNum for a
single circuit.

It is expected that this will change again with Conflux to only use
HopLocation internally in a Tunnel and then use HopNum into a Circuit.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>hs: Remove the use of HopNum and instead use TargetHop</title>
<updated>2025-06-26T14:18:30Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2025-06-19T17:57:47Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=7d05e9f4825f96d5fe470be84cf3095d4c675817'/>
<id>urn:sha1:7d05e9f4825f96d5fe470be84cf3095d4c675817</id>
<content type='text'>
This is in the spirit of making everything going inbound the tor-proto
crate to use a TargetHop.

This becomes much easier for the HS subsystem as it only uses the last
hop for its conversation and setup.

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