<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-hsrproxy/src/proxy.rs, branch main</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=main</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2026-07-01T13:38:32Z</updated>
<entry>
<title>added Unix Socket support</title>
<updated>2026-07-01T13:38:32Z</updated>
<author>
<name>pryty26</name>
<email>pryty017@proton.me</email>
</author>
<published>2026-07-01T13:38:32Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=cb1487f898794c85918deb2b68c2a4488a79a636'/>
<id>urn:sha1:cb1487f898794c85918deb2b68c2a4488a79a636</id>
<content type='text'>
</content>
</entry>
<entry>
<title>proto: Add crate-level exports for two extra stream types (fmt)</title>
<updated>2026-06-17T13:38:44Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2026-06-17T13:31:26Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d305c6c0a201703ce14fbcfdce1864aeda9cc8dc'/>
<id>urn:sha1:d305c6c0a201703ce14fbcfdce1864aeda9cc8dc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-rtcompat+misc: add `NetStreamProvider::ConnectOptions`</title>
<updated>2026-06-08T16:55:27Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2026-05-26T20:57:08Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=926c7a5449e29e2d652431a2406e7acae59bed50'/>
<id>urn:sha1:926c7a5449e29e2d652431a2406e7acae59bed50</id>
<content type='text'>
This adds the trait type `ConnectOptions` to `NetStreamProvider` and adds
this `ConnectOptions` as an argument to `NetStreamProvider::connect()`.

You probably want to look at the changes in tor-rtcompat first, then the
rest of this commit is updating the various places we use
`NetStreamProvider`.
</content>
</entry>
<entry>
<title>all: replace all uses of `futures::task::SpawnExt` with `tor_rtcompat::SpawnExt`</title>
<updated>2025-11-05T03:39:55Z</updated>
<author>
<name>Steven Engler</name>
<email>opara@torproject.org</email>
</author>
<published>2025-11-05T03:00:47Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6bfa9e986694b4fce0926dd21f309161e497ced8'/>
<id>urn:sha1:6bfa9e986694b4fce0926dd21f309161e497ced8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Replace copy_interactive with futures-copy.</title>
<updated>2025-10-31T00:15:39Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2025-10-31T00:15:39Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=12b2913d4a50353223ebe5a3200614dc3dfcb13b'/>
<id>urn:sha1:12b2913d4a50353223ebe5a3200614dc3dfcb13b</id>
<content type='text'>
This change lets us avoid spawning extra tasks (due to one-direction
nature of copy_interactive), and avoid some lock contention (due to
use of AsyncReadExt::split).

Addresses part of #786.
</content>
</entry>
<entry>
<title>proto: Move the `stream` module under `client` (breaking).</title>
<updated>2025-08-18T16:09:04Z</updated>
<author>
<name>Gabriela Moldovan</name>
<email>gabi@torproject.org</email>
</author>
<published>2025-08-18T15:52:38Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=702e7276898d3f31e22033c5b64fea91703f3701'/>
<id>urn:sha1:702e7276898d3f31e22033c5b64fea91703f3701</id>
<content type='text'>
The `stream` module is client-specific, for the most part, so I am
moving it under `client`. Later on, we will factor out the parts that
can be shared with the relay implementation.

Note: this is a breaking change as the deleted `stream` module was
`pub`. We could've kept the module and reexported from it the public
types from `tor_proto::client::stream`, but I think it's better to have
this `client` namespacing, because it makes the separation between the
client and relay parts clearer.
</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>metrics: tor-hsrproxy: Use a bespoke type for counter outcomes</title>
<updated>2025-04-08T17:20:50Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2025-04-08T11:50:17Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e02da4600e7a66bee5ac3dc57b708c0942bda895'/>
<id>urn:sha1:e02da4600e7a66bee5ac3dc57b708c0942bda895</id>
<content type='text'>
Prompted by
  https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2918#note_3185872
</content>
</entry>
<entry>
<title>tor-hsrproxy: Export a connection count metric (fmt)</title>
<updated>2025-04-08T17:20:50Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2025-04-02T16:23:22Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=016bcdbe6e93d7a565e33640c1363d5a79c7472d'/>
<id>urn:sha1:016bcdbe6e93d7a565e33640c1363d5a79c7472d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-hsrproxy: Export a connection count metric</title>
<updated>2025-04-08T17:20:50Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2025-04-02T16:21:39Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e9ee2f4204b5139de9946d86c942b6e62427f258'/>
<id>urn:sha1:e9ee2f4204b5139de9946d86c942b6e62427f258</id>
<content type='text'>
This proves the concept.  Many more metrics will need to be added
throughout the codebase.

With this compiled in and enabled, I see this with curl:

&gt; ```
&gt; # TYPE arti_hss_proxy_connections_failed_total counter
&gt; arti_hss_proxy_connections_failed_total{nickname="ztest",action="destroy_circuit"} 0
&gt; arti_hss_proxy_connections_failed_total{nickname="ztest",action="ignore_stream"} 0
&gt; arti_hss_proxy_connections_failed_total{nickname="ztest",action="forward"} 0
&gt; arti_hss_proxy_connections_failed_total{nickname="ztest",action="reject_stream"} 0
&gt;
&gt; # TYPE arti_hss_proxy_connections_total counter
&gt; arti_hss_proxy_connections_total{nickname="ztest",action="reject_stream"} 0
&gt; arti_hss_proxy_connections_total{nickname="ztest",action="forward"} 1
&gt; arti_hss_proxy_connections_total{nickname="ztest",action="destroy_circuit"} 0
&gt; arti_hss_proxy_connections_total{nickname="ztest",action="ignore_stream"} 0
&gt;
&gt; # TYPE arti_hss_proxy_connections_ok_total counter
&gt; arti_hss_proxy_connections_ok_total{nickname="ztest",action="destroy_circuit"} 0
&gt; arti_hss_proxy_connections_ok_total{nickname="ztest",action="reject_stream"} 0
&gt; arti_hss_proxy_connections_ok_total{nickname="ztest",action="ignore_stream"} 0
&gt; arti_hss_proxy_connections_ok_total{nickname="ztest",action="forward"} 1
&gt; ```
</content>
</entry>
</feed>
