<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-circmgr/src/impls.rs, branch arti-v2.0.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.0.0</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v2.0.0'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2025-12-01T10:59:32Z</updated>
<entry>
<title>circmgr: allow unstable_name_collisions lint for exactly_one()</title>
<updated>2025-12-01T10:59:32Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-12-01T10:59:32Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c62f86e5310379299f57d780d089967f29c0d919'/>
<id>urn:sha1:c62f86e5310379299f57d780d089967f29c0d919</id>
<content type='text'>
This silences a new nightly warning.
</content>
</entry>
<entry>
<title>opentelemetry: Instrument a bunch of functions.</title>
<updated>2025-11-24T16:28:07Z</updated>
<author>
<name>Wesley Aptekar-Cassels</name>
<email>me@wesleyac.com</email>
</author>
<published>2025-11-24T16:28:07Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=a4db6a7495b13dd7b00416dd1660a5ad82b60919'/>
<id>urn:sha1:a4db6a7495b13dd7b00416dd1660a5ad82b60919</id>
<content type='text'>
These are all aimed at figuring out in more detail what's going on
in #2079 and related issues.
</content>
</entry>
<entry>
<title>circmgr: Implement expiration for long-lived tunnels.</title>
<updated>2025-11-12T15:00:55Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-10-30T21:09:24Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=b7be042e020cb38ee817524f4a9d9f9187bed8f0'/>
<id>urn:sha1:b7be042e020cb38ee817524f4a9d9f9187bed8f0</id>
<content type='text'>
This code uses the algorithm of prop368: When a tunnel is
sufficiently isolated, we want to expire it after it has been
disused for a certain amount of time.

The implementation is a little tricky, since we need to call an
async function on ClientTunnel to look up the disused_since() check.
We don't want to call async functions while holding locks, so
we need to drop the TunnelList lock before we do the disused_since()
calls, and the grab it again.

As part of this change, I've had made expiration functions return
the earliest time at which any tunnel might expire.  We can use
this in the future to spawn fewer expiration tasks, and scan the
list of tunnels less often.
</content>
</entry>
<entry>
<title>proto: Add a circuit module shared between client and relay impls.</title>
<updated>2025-08-28T10:54:48Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-08-26T17:48:56Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=4ee5a4abcee895e79588888f6bc8eaa6963a6ba7'/>
<id>urn:sha1:4ee5a4abcee895e79588888f6bc8eaa6963a6ba7</id>
<content type='text'>
This is just code motion (I suggest reviewing with `--color-moved`).

This also moves the implementation-agnostic parts from
`tor_proto::client::circuit` to a new `tor_proto::circuit` module.
</content>
</entry>
<entry>
<title>Switch Cargo.toml files to edition 2024.</title>
<updated>2025-08-07T15:28:36Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-08-06T01:19:58Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=77b0de43b8c67cdb81befe0680a3df43b6ad37bc'/>
<id>urn:sha1:77b0de43b8c67cdb81befe0680a3df43b6ad37bc</id>
<content type='text'>
First, run

```
git grep -l "^edition =" |
    xargs perl -i -pe 's/^edition *=.*/edition = "2024"/;'
```

Second, manually verify that all Cargo.toml files have changed,
and nothing else has changed.

Third, run cargo fmt again.
</content>
</entry>
<entry>
<title>Do not fully-qualify Sync.</title>
<updated>2025-08-05T18:23:03Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-07-22T10:17:00Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=422a2545d1beff22c89e7f3ef4e8143ed23c0be7'/>
<id>urn:sha1:422a2545d1beff22c89e7f3ef4e8143ed23c0be7</id>
<content type='text'>
It's necessary and more verbose (and it's rather uncommon).
</content>
</entry>
<entry>
<title>proto: Fix infinite recursion in ClientTunnel::extend().</title>
<updated>2025-08-05T18:23:02Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-07-21T17:50:05Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d52c92023b89de097d247a7c2d8cc48c33ce13f5'/>
<id>urn:sha1:d52c92023b89de097d247a7c2d8cc48c33ce13f5</id>
<content type='text'>
`AbstractTunnel::extend()` was calling itself endlessly because there
was no `ClientTunnel::extend()` function to call.
</content>
</entry>
<entry>
<title>proto: abolish path_ref() in favor of all_paths().</title>
<updated>2025-08-05T18:23:02Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-07-18T17:28:39Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=2610fe21fc394f4cdb6cd1a91ba9d2ad72aadb01'/>
<id>urn:sha1:2610fe21fc394f4cdb6cd1a91ba9d2ad72aadb01</id>
<content type='text'>
Until now, we've been using `ClientCirc::path_ref()` to get the *only*
path of a circuit. Now that `ClientCirc` is a handle to a tunnel reactor
(which may or may not be multi-path), we need to decide for each call
site of `path_ref()`, if we actually want *all* paths in the tunnel, or
if we expect the tunnel to be single-path and thus want the *only* path
in the tunnel.

I've added two new APIs to address this: `all_paths()`, for getting all
the paths in the tunnel, and `single_path()` for getting the only path
in the tunnel, or an error if the tunnel is single-path.
</content>
</entry>
<entry>
<title>circmgr: Return more type specific tunnel</title>
<updated>2025-08-05T18:23:02Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2025-07-01T15:10:44Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6df4f6bccc46dc6a0ec3dd9acff0660a98e235b8'/>
<id>urn:sha1:6df4f6bccc46dc6a0ec3dd9acff0660a98e235b8</id>
<content type='text'>
This is the first step towards making the circmgr return high level
tunnel types (wrappers around ClientTunnel).

Future commits will then modify each subsystems to use those specific
types. They are split in order to reduce complexity.

Signed-off-by: David Goulet &lt;dgoulet@torproject.org&gt;
</content>
</entry>
<entry>
<title>tunnel: Implement Buildable for ClientTunnel</title>
<updated>2025-08-05T18:23:02Z</updated>
<author>
<name>David Goulet</name>
<email>dgoulet@torproject.org</email>
</author>
<published>2025-04-30T14:57:51Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=270d07037a782d6fc30eacc37568e1317294a8df'/>
<id>urn:sha1:270d07037a782d6fc30eacc37568e1317294a8df</id>
<content type='text'>
In order to pull this off, the Arc requirement needs to go away because
the Arc&lt;ClientCirc&gt; is now within the ClientTunnel.

This commit also has a rename of the CircuitBuilder to TunnelBuilder in
order to reflect the change that it now builds a ClientTunnel.

There is a slight rename in tor-proto as well just for accuracy.

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