2020-11-02 15:44:31 +00:00
|
|
|
[package]
|
|
|
|
name = "tor-circmgr"
|
2022-09-01 13:52:51 +01:00
|
|
|
version = "0.5.0"
|
2021-03-17 18:43:40 +00:00
|
|
|
authors = ["The Tor Project, Inc.", "Nick Mathewson <nickm@torproject.org>"]
|
2022-04-25 17:19:02 +01:00
|
|
|
edition = "2021"
|
2022-04-25 17:10:41 +01:00
|
|
|
rust-version = "1.56"
|
2020-11-02 15:44:31 +00:00
|
|
|
license = "MIT OR Apache-2.0"
|
2021-03-17 18:13:26 +00:00
|
|
|
homepage = "https://gitlab.torproject.org/tpo/core/arti/-/wikis/home"
|
2021-03-17 18:31:59 +00:00
|
|
|
description = "Manage a set of anonymous circuits over the Tor network"
|
2022-03-25 19:12:17 +00:00
|
|
|
keywords = ["tor", "arti", "async"]
|
|
|
|
categories = ["network-programming", "cryptography"]
|
|
|
|
repository = "https://gitlab.torproject.org/tpo/core/arti.git/"
|
2020-11-02 15:44:31 +00:00
|
|
|
|
2021-04-01 18:58:03 +01:00
|
|
|
[features]
|
2022-06-10 20:26:51 +01:00
|
|
|
|
2021-11-11 15:44:24 +00:00
|
|
|
# Enable experimental APIs that are not yet officially supported.
|
|
|
|
#
|
|
|
|
# These APIs are not covered by semantic versioning. Using this
|
|
|
|
# feature voids your "semver warrantee".
|
2022-06-10 20:26:51 +01:00
|
|
|
experimental = ["experimental-api"]
|
2021-04-01 18:58:03 +01:00
|
|
|
experimental-api = []
|
|
|
|
|
2020-11-02 15:44:31 +00:00
|
|
|
[dependencies]
|
2022-01-07 20:54:24 +00:00
|
|
|
async-trait = "0.1.2"
|
|
|
|
bounded-vec-deque = "0.1"
|
2022-05-06 13:18:03 +01:00
|
|
|
derive_builder = { version = "0.11.2", package = "derive_builder_fork_arti" }
|
2022-03-12 10:10:00 +00:00
|
|
|
downcast-rs = "1.2.0"
|
2022-03-12 17:33:25 +00:00
|
|
|
dyn-clone = "1.0.4"
|
2022-03-02 14:32:29 +00:00
|
|
|
educe = "0.4.6"
|
2022-01-28 19:50:03 +00:00
|
|
|
futures = "0.3.14"
|
2022-03-11 17:24:21 +00:00
|
|
|
humantime-serde = "1.1.1"
|
2021-07-02 16:57:31 +01:00
|
|
|
itertools = "0.10.1"
|
2022-03-25 20:44:12 +00:00
|
|
|
once_cell = "1"
|
2022-01-07 20:54:24 +00:00
|
|
|
pin-project = "1"
|
|
|
|
rand = "0.8"
|
2022-05-28 17:41:39 +01:00
|
|
|
retry-error = { path = "../retry-error", version = "0.2.0" }
|
|
|
|
safelog = { path = "../safelog", version = "0.1.0" }
|
2022-01-07 20:54:24 +00:00
|
|
|
serde = { version = "1.0.103", features = ["derive"] }
|
|
|
|
static_assertions = "1"
|
|
|
|
thiserror = "1"
|
2022-09-01 13:52:51 +01:00
|
|
|
tor-basic-utils = { path = "../tor-basic-utils", version = "0.4.0" }
|
|
|
|
tor-chanmgr = { path = "../tor-chanmgr", version = "0.6.0" }
|
|
|
|
tor-config = { path = "../tor-config", version = "0.6.0" }
|
2022-06-24 17:00:22 +01:00
|
|
|
tor-error = { path = "../tor-error", version = "0.3.2" }
|
2022-09-01 13:52:51 +01:00
|
|
|
tor-guardmgr = { path = "../tor-guardmgr", version = "0.6.0" }
|
|
|
|
tor-linkspec = { path = "../tor-linkspec", version = "0.5.0" }
|
|
|
|
tor-netdir = { path = "../tor-netdir", version = "0.6.0" }
|
|
|
|
tor-netdoc = { path = "../tor-netdoc", version = "0.5.1" }
|
|
|
|
tor-persist = { path = "../tor-persist", version = "0.5.1" }
|
|
|
|
tor-proto = { path = "../tor-proto", version = "0.6.0" }
|
|
|
|
tor-rtcompat = { path = "../tor-rtcompat", version = "0.6.0" }
|
2022-05-28 17:41:39 +01:00
|
|
|
tracing = "0.1.18"
|
Enormous tor-circmgr rewrite.
As with the tor-chanmgr code, the circuit manager is now implemented
using an AbstractCircMgr type that uses traits to abstract the
particular behavior of other types that it uses. (Specifically:
circuits, building circuits, and telling whether one circuit usage
is compatible with another.) Abstracting out the dependencies in
this ways makes it possible to test the circuit manager without
having to actually build real circuits.
This commit also introduces new behavior for handling pending
circuit requests. Upon getting a new request, first we check to see
if there's an existing circuit we can use. If there isn't, we look
for pending circuits and wait for them. If there aren't any pending
circuits we can use, we launch one or more, and wait for them.
So far, that's the same as the old behavior. But here's a change:
if, while we are waiting for some pending circuits, a different
circuit is completed, and it's one we could use, then the task that
was building _that_ circuit will tell us: "please look at this
circuit". This gives us better changes of getting a usable circuit
fast.
Minor changes:
* The Error type in CircMgr no longer uses anyhow; several errors
have been simplified.
* We've gotten more formal about the relationship between circuit
usage and target usage.
2021-05-27 20:48:30 +01:00
|
|
|
weak-table = "0.3.0"
|
2020-11-02 15:44:31 +00:00
|
|
|
|
|
|
|
[dev-dependencies]
|
|
|
|
futures-await-test = "0.3.0"
|
2022-09-01 13:52:51 +01:00
|
|
|
tor-guardmgr = { path = "../tor-guardmgr", version = "0.6.0", features = ["testing"] }
|
|
|
|
tor-llcrypto = { path = "../tor-llcrypto", version = "0.3.4" }
|
|
|
|
tor-netdir = { path = "../tor-netdir", version = "0.6.0", features = ["testing"] }
|
|
|
|
tor-persist = { path = "../tor-persist", version = "0.5.1", features = ["testing"] }
|
|
|
|
tor-rtcompat = { path = "../tor-rtcompat", version = "0.6.0", features = ["tokio", "native-tls"] }
|
|
|
|
tor-rtmock = { path = "../tor-rtmock", version = "0.5.0" }
|
2022-08-17 20:13:13 +01:00
|
|
|
[package.metadata.docs.rs]
|
|
|
|
all-features = true
|
|
|
|
rustdoc-args = ["--cfg", "docsrs"]
|