summaryrefslogtreecommitdiff
path: root/crates/tor-chanmgr/README.md
blob: d766c5a269b7b50092a92d68cb0020966075525b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# tor-chanmgr

`tor-chanmgr`: Manage a set of channels on the Tor network.

## Overview

This crate is part of
[Arti](https://gitlab.torproject.org/tpo/core/arti/), a project to
implement [Tor](https://www.torproject.org/) in Rust.

In Tor, a channel is a connection to a Tor relay.  It can be
direct via TLS, or indirect via TLS over a pluggable transport.
(For now, only direct channels are supported.)

Since a channel can be used for more than one circuit, it's
important to reuse channels when possible.  This crate implements
a [`ChanMgr`] type that can be used to create channels on demand,
and return existing channels when they already exist.
## Compile-time features

### Experimental and unstable features

 Note that the APIs enabled by these features are NOT covered by
 semantic versioning[^1] guarantees: we might break them or remove
 them between patch versions.

* `pt-client` -- Build with (as yet unimplemented) APIs to support
  pluggable transports.

* `experimental` -- Build with all experimental features above.

[^1]: Remember, semantic versioning is what makes various `cargo`
features work reliably. To be explicit: if you want `cargo update`
to _only_ make safe changes, then you cannot enable these
features.

License: MIT OR Apache-2.0