<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/circuit.rs, 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-08T14:07:16Z</updated>
<entry>
<title>proto: Update the tests to use the new CircuitRx{Receiver,Sender}s</title>
<updated>2026-06-08T14:07:16Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-05-13T17:47:20Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d68fede4bcd2d28d4bb6add00193e6170dea97da'/>
<id>urn:sha1:d68fede4bcd2d28d4bb6add00193e6170dea97da</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: Replace CircuitRx{Sender,Receiver} with new channel type</title>
<updated>2026-06-08T14:07:16Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-05-13T13:53:25Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6b206002d3aaadeee3d2442637c62d1b752b0960'/>
<id>urn:sha1:6b206002d3aaadeee3d2442637c62d1b752b0960</id>
<content type='text'>
This is needed for relays as part of #2490.

Note that changing this type affects the client implementation too (i.e.
clients will start prioritizing inbound DESTROY, discarding any queued
data without forwarding it to their local streams). But that's okay,
because it will generally only affect misbehaving clients, and clients
unlucky enough to encounter a hibernating relay.
</content>
</entry>
<entry>
<title>proto: Add a new channel -&gt; circuit queue type</title>
<updated>2026-06-08T14:07:16Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-05-13T13:21:02Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=7dd0e99db6fb49e1ce4d6cb0abce53dc5acbdfad'/>
<id>urn:sha1:7dd0e99db6fb49e1ce4d6cb0abce53dc5acbdfad</id>
<content type='text'>
This adds new a `CircuitRxSender`/`CircuitRxReceiver` queue type.

The corresponding (`Sink`-link) sender and `Stream` implementations
prioritize the delivery of `DESTROY` messages, which get delivered
immediately, even if there are other messages queued in the underlying
MPSC message queue.

We are okay with the resulting data loss, because inbound DESTROY can be
indicative of malicious activity on the circuit. We choose to err on the
safe side, and free up the resources associated with such circuits as
soon as possible. DESTROY messages are also sent by relays when they're
about to hibernate, and by clients once they've decided to stop using a
circuit. In the latter case, the lack of an `RELAY_COMMAND_END_ACK`
does mean that this prioritization can cause data loss in cases where
the client closes the circuit immediately after END-ing a stream.
However, this is a deficiency in the protocol, and not something we want
to fix by implementing custom flushing logic in the reactor. See
torspec#196 and the discussion in #2490.

Part of #2490
</content>
</entry>
<entry>
<title>proto: Add a test helper function for building a CircNetParameters</title>
<updated>2026-04-14T20:10:18Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2026-04-14T19:43:47Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=4ac851f19aa4748d928858739b31f80362c8f2a4'/>
<id>urn:sha1:4ac851f19aa4748d928858739b31f80362c8f2a4</id>
<content type='text'>
We can't access `NetParameters` in this crate to build from consensus
default value so instead add a `defaults_for_tests()` gated function for
each parameters object which puts in the defaults from the spec.

We'll need CircNetParameters in order to build create request handler
for unit tests hence why it is in src/circuit.rs.
</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: Move CREATE helpers to a shared module</title>
<updated>2026-02-05T16:04:59Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-02-05T15:41:31Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c99d76dd41e9a87e9041b0aa13ed4feb55f02a41'/>
<id>urn:sha1:c99d76dd41e9a87e9041b0aa13ed4feb55f02a41</id>
<content type='text'>
These will be used by the relay code too (for circuit extension).
</content>
</entry>
<entry>
<title>proto: Avoid locking in CircHopOutbound::ccontrol()</title>
<updated>2026-01-29T16:33:21Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-01-22T11:54:26Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=29159e80c713ea4ab1ab657c7eeae53f37e62814'/>
<id>urn:sha1:29159e80c713ea4ab1ab657c7eeae53f37e62814</id>
<content type='text'>
This is just because the generic reactor will soon need a clone of the
CC object, so I am preemptively making this function return a ref to the
underlying `Arc` instead. Technically, it would've been fine to just
kept this method and add a separate one returning `&amp;Arc&lt;Mutex&lt;..&gt;&gt;`,
but I'd prefer keeping the API small.
</content>
</entry>
<entry>
<title>proto: Add a new module for the generic circuit reactor</title>
<updated>2026-01-29T16:33:21Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-01-21T18:11:48Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=5fc5120dcca5b470fbc2281e47b86be7302c9d0b'/>
<id>urn:sha1:5fc5120dcca5b470fbc2281e47b86be7302c9d0b</id>
<content type='text'>
Currently empty, will be fleshed out in a future commit.
</content>
</entry>
<entry>
<title>proto; Factor HOPS constant out of maybenot_padding</title>
<updated>2026-01-29T16:33:21Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-01-14T11:40:35Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=0189413e0581ea7c852c87663fe4a24511e3158b'/>
<id>urn:sha1:0189413e0581ea7c852c87663fe4a24511e3158b</id>
<content type='text'>
I am about to use this in other places too.
</content>
</entry>
<entry>
<title>proto: Move CircPaddingDisposition to a new module</title>
<updated>2026-01-29T16:33:21Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-01-23T14:30:15Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=93db46cc7e5124e2211e54c43652fafebcddae35'/>
<id>urn:sha1:93db46cc7e5124e2211e54c43652fafebcddae35</id>
<content type='text'>
Relays will need to use it too.
</content>
</entry>
</feed>
