<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/tunnel/reactor.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-25T13:10:30Z</updated>
<entry>
<title>proto: Replace hand-rolled exactly_one() impl with itertools.</title>
<updated>2025-07-25T13:10:30Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-07-25T11:03:24Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=00bb06283948a0695e0f628ce4e7cb363589d383'/>
<id>urn:sha1:00bb06283948a0695e0f628ce4e7cb363589d383</id>
<content type='text'>
This slightly reduces the amount of code we need to maintain.

This also drive-by fixes a bug in `ConfluxSet::take_single_leg`, which
previously never actually checked if the conflux set was of size one.
</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>Merge branch 'flow-ctrl' into 'main'</title>
<updated>2025-07-16T18:40:44Z</updated>
<author>
<name>opara</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-16T18:40:44Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=1a4020ac0b96e77d79236645df5703337d92bd42'/>
<id>urn:sha1:1a4020ac0b96e77d79236645df5703337d92bd42</id>
<content type='text'>
tor-proto,tor-cell: Code refactoring and add support for sending XOFF messages

See merge request tpo/core/arti!3094</content>
</entry>
<entry>
<title>conflux: Ensure the min-heap is really a min-heap.</title>
<updated>2025-07-16T17:40:21Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-07-14T17:24:11Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c6185a26617cea8700112716f1f7f98049d13817'/>
<id>urn:sha1:c6185a26617cea8700112716f1f7f98049d13817</id>
<content type='text'>
The `Ord` impl of `OooRelayMsg` already "reverses" the seqno comparison,
which means previously we were double-reversing it (leading to the ooo
cell heap logic being broken in cases where its size was &gt; 1).

Caught by the new conflux switch handling tests.
</content>
</entry>
<entry>
<title>tor-proto: add dedicated types for the incoming stream queue</title>
<updated>2025-07-16T17:36:43Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-07-15T03:38:23Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9067118cff859a40772462c20fd0bc44a5e8bedc'/>
<id>urn:sha1:9067118cff859a40772462c20fd0bc44a5e8bedc</id>
<content type='text'>
XON/XOFF flow control will want to know how many data bytes are queued
on a stream, so the new types track that.
</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: Remove unnecessary return.</title>
<updated>2025-07-07T15:58:27Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-07-07T15:58:27Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6672d6eb48c42df25b8de32dc5af60546287e92d'/>
<id>urn:sha1:6672d6eb48c42df25b8de32dc5af60546287e92d</id>
<content type='text'>
</content>
</entry>
</feed>
