diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2022-03-01 10:16:28 +0000 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2022-03-01 10:28:06 +0000 |
commit | bda9f82c551c76fe11ad2f4695d97bc4353d3a5a (patch) | |
tree | 38c3add297ae01c409c571793bfc4090690c50d3 | |
parent | 13ba0ea005ddd87bba2d53ab738ce948f031e1e8 (diff) | |
parent | be288399ec809c46905b9f02599fa9df66968f51 (diff) | |
download | arti-bda9f82c551c76fe11ad2f4695d97bc4353d3a5a.tar.gz arti-bda9f82c551c76fe11ad2f4695d97bc4353d3a5a.zip |
Merge branch 'main'
Fixed conflict in crates/arti-client/src/lib.rs as per tree
from
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/364/#note_2782166
ie 13e55b8d7c22c26e55ba75823409b477f1bce66b
-rw-r--r-- | .gitlab-ci.yml | 13 | ||||
-rw-r--r-- | Cargo.lock | 372 | ||||
m--------- | arti-corpora | 0 | ||||
-rw-r--r-- | crates/arti-client/Cargo.toml | 4 | ||||
-rw-r--r-- | crates/arti-client/src/lib.rs | 8 | ||||
-rw-r--r-- | crates/arti/Cargo.toml | 4 | ||||
-rw-r--r-- | crates/arti/src/main.rs | 17 | ||||
-rw-r--r-- | crates/tor-circmgr/src/impls.rs | 12 | ||||
-rw-r--r-- | crates/tor-circmgr/src/mgr.rs | 30 | ||||
-rw-r--r-- | crates/tor-circmgr/src/path.rs | 2 | ||||
-rw-r--r-- | crates/tor-guardmgr/Cargo.toml | 2 | ||||
-rw-r--r-- | crates/tor-guardmgr/src/pending.rs | 11 | ||||
-rw-r--r-- | crates/tor-proto/Cargo.toml | 4 | ||||
-rw-r--r-- | crates/tor-proto/src/lib.rs | 9 | ||||
-rw-r--r-- | crates/tor-proto/src/util.rs | 1 |
15 files changed, 291 insertions, 198 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6c9f54f57..d8868eef3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,7 +57,7 @@ rust-latest-async-std-rustls: - amd64 rust-nightly: - stage: build + stage: test image: rustlang/rust:nightly allow_failure: true script: @@ -71,7 +71,7 @@ rust-nightly: # and similar, for when nightly clippy has false positives. (There is no builtin # cfg flag for nightly, and a cargo "feature" would be bad with --all-features.) - cargo clippy --all-features --tests -- --cfg ci_arti_nightly -D clippy::dbg_macro -D clippy::print_stdout -D clippy::print_stderr - - RUSTDOCFLAGS="-Dwarnings" cargo doc --all-features --document-private-items + - RUSTDOCFLAGS="-Dwarnings" cargo doc --all-features --document-private-items --no-deps tags: - amd64 @@ -79,19 +79,20 @@ coverage: stage: test image: rust:latest allow_failure: true - variables: - RUSTFLAGS: "-Zinstrument-coverage" - LLVM_PROFILE_FILE: "arti-%p-%m.profraw" script: - apt-get update && apt-get install -y python3-pip python3-setuptools - pip3 install beautifulsoup4 lxml - rustup toolchain add nightly - rustup default nightly - rustup component add llvm-tools-preview - - cargo install grcov + - cp grcov $CARGO_HOME/bin/ || cargo install grcov + - cp $CARGO_HOME/bin/grcov . # Generate report - ./maint/with_coverage cargo test --verbose --all-features - ./maint/with_coverage -f cobertura -o coverage.xml -c true + cache: + paths: + - grcov artifacts: paths: - 'coverage' diff --git a/Cargo.lock b/Cargo.lock index 0cc2e5e72..65aebaac1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -36,7 +36,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.4", + "getrandom 0.2.5", "once_cell", "version_check", ] @@ -52,9 +52,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.53" +version = "1.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a45b455c14666b85fc40a019e8ab9eb75e3a124e05494f5397122bc9eb06e0" +checksum = "159bb86af3a200e19a068f4224eae4c8bb2d0fa054c7e5d1cacd5cef95e684cd" [[package]] name = "arrayref" @@ -100,7 +100,7 @@ dependencies = [ "clap", "float-ord", "futures", - "rand 0.8.4", + "rand 0.8.5", "serde", "serde_json", "tokio", @@ -270,9 +270,9 @@ dependencies = [ [[package]] name = "async-lock" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6a8ea61bf9947a1007c5cada31e647dbc77b103c679858150003ba697ea798b" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" dependencies = [ "event-listener", ] @@ -406,7 +406,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", ] [[package]] @@ -428,15 +428,18 @@ dependencies = [ [[package]] name = "autocfg" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" +checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" +dependencies = [ + "autocfg 1.1.0", +] [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" @@ -493,9 +496,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.10.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1d36a02058e76b040de25a4464ba1c80935655595b661505c8b39b664828b95" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" dependencies = [ "generic-array", ] @@ -556,9 +559,9 @@ checksum = "7b02b629252fe8ef6460461409564e2c21d0c8e77e0944f3d189ff06c4e932ad" [[package]] name = "cc" -version = "1.0.72" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" dependencies = [ "jobserver", ] @@ -648,9 +651,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "core-foundation" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ "core-foundation-sys", "libc", @@ -673,9 +676,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2209c310e29876f7f0b2721e7e26b84aff178aa3da5d091f9bfbf47669e60e3" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if 1.0.0", ] @@ -692,9 +695,9 @@ dependencies = [ [[package]] name = "crossbeam-queue" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b979d76c9fcb84dffc80a73f7290da0f83e4c95773494674cb44b76d13a7a110" +checksum = "4dd435b205a4842da59efd07628f921c096bc1cc0a156835b4fa0bcb9a19bcce" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -702,9 +705,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcae03edb34f947e64acdb1c33ec169824e20657e9ecb61cef6c8c74dcb8120" +checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6" dependencies = [ "cfg-if 1.0.0", "lazy_static", @@ -723,11 +726,12 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d6b536309245c849479fba3da410962a43ed8e51c26b729208ec0ac2798d0" +checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" dependencies = [ "generic-array", + "typenum", ] [[package]] @@ -761,9 +765,9 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "3.2.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" dependencies = [ "byteorder", "digest 0.9.0", @@ -872,13 +876,12 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b697d66081d42af4fba142d56918a3cb21dc8eb63372c6b85d14f44fb9c5979b" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" dependencies = [ - "block-buffer 0.10.0", + "block-buffer 0.10.2", "crypto-common", - "generic-array", "subtle", ] @@ -1118,9 +1121,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28560757fe2bb34e79f907794bb6b22ae8b0e5c669b638a1132f2592b19035b4" +checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" dependencies = [ "futures-channel", "futures-core", @@ -1154,9 +1157,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3dda0b6588335f360afc675d0564c17a77a2bda81ca178a4b6081bd86c7f0b" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" dependencies = [ "futures-core", "futures-sink", @@ -1164,15 +1167,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c8ff0461b82559810cdccfde3215c3f373807f5e5232b71479bff7bb2583d7" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" [[package]] name = "futures-executor" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29d6d2ff5bb10fb95c85b8ce46538a2e5f5e7fdc755623a7d4529ab8a4ed9d2a" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" dependencies = [ "futures-core", "futures-task", @@ -1181,9 +1184,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f9d34af5a1aac6fb380f735fe510746c38067c5bf16c7fd250280503c971b2" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" [[package]] name = "futures-lite" @@ -1202,9 +1205,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbd947adfffb0efc70599b3ddcf7b5597bb5fa9e245eb99f62b3a5f7bb8bd3c" +checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" dependencies = [ "proc-macro2", "quote", @@ -1213,21 +1216,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3055baccb68d74ff6480350f8d6eb8fcfa3aa11bdc1a1ae3afdd0514617d508" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" [[package]] name = "futures-task" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee7c6485c30167ce4dfb83ac568a849fe53274c831081476ee13e0dce1aad72" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" [[package]] name = "futures-util" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b5cf40b47a271f77a8b1bec03ca09044d99d2372c0de244e66430761127164" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ "futures-channel", "futures-core", @@ -1264,9 +1267,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c" +checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -1334,20 +1337,20 @@ checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] name = "hkdf" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "158bc31e00a68e380286904cc598715f861f2b0ccf7aa6fe20c6d0c49ca5d0f6" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddca131f3e7f2ce2df364b57949a9d47915cfbd35e46cfee355ccebbf794d6a2" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.1", + "digest 0.10.3", ] [[package]] @@ -1358,7 +1361,7 @@ checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" dependencies = [ "bytes", "fnv", - "itoa 1.0.1", + "itoa", ] [[package]] @@ -1374,9 +1377,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" +checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" [[package]] name = "httpdate" @@ -1402,9 +1405,9 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.16" +version = "0.14.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ec3e62bdc98a2f0393a5048e4c30ef659440ea6e0e572965103e72bd836f55" +checksum = "043f0e083e9901b6cc658a77d1eb86f4fc650bbb977a4337dd63192826aa85dd" dependencies = [ "bytes", "futures-channel", @@ -1414,7 +1417,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 0.4.8", + "itoa", "pin-project-lite", "socket2", "tokio", @@ -1489,12 +1492,6 @@ dependencies = [ [[package]] name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" @@ -1559,15 +1556,15 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.115" +version = "0.2.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a8d982fa7a96a000f6ec4cfe966de9703eccde29750df2bb8949da91b0e818d" +checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" [[package]] name = "libm" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" +checksum = "33a33a362ce288760ec6a508b94caaec573ae7d3bbbd91b87aa0bad4456839db" [[package]] name = "libsqlite3-sys" @@ -1582,9 +1579,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109" +checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" dependencies = [ "scopeguard", ] @@ -1633,9 +1630,9 @@ checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "memmap2" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe3179b85e1fd8b14447cbebadb75e45a1002f541b925f0bfec366d56a81c56d" +checksum = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f" dependencies = [ "libc", ] @@ -1646,7 +1643,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", ] [[package]] @@ -1674,7 +1671,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", - "autocfg 1.0.1", + "autocfg 1.1.0", ] [[package]] @@ -1698,9 +1695,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.7.14" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" +checksum = "ba272f85fa0b41fc91872be579b3bbe0f56b792aa361a380eb669469f68dafb2" dependencies = [ "libc", "log", @@ -1815,9 +1812,9 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" dependencies = [ "winapi 0.3.9", ] @@ -1828,7 +1825,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "num-integer", "num-traits", ] @@ -1839,14 +1836,14 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4547ee5541c18742396ae2c895d0717d0f886d8823b8399cdaf7b07d63ad0480" dependencies = [ - "autocfg 0.1.7", + "autocfg 0.1.8", "byteorder", "lazy_static", "libm", "num-integer", "num-iter", "num-traits", - "rand 0.8.4", + "rand 0.8.5", "smallvec", "zeroize", ] @@ -1857,7 +1854,7 @@ version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "num-traits", ] @@ -1867,7 +1864,7 @@ version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "num-integer", "num-traits", ] @@ -1878,7 +1875,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "libm", ] @@ -1957,7 +1954,7 @@ version = "0.9.72" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "cc", "libc", "openssl-src", @@ -1973,27 +1970,25 @@ checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" [[package]] name = "parking_lot" -version = "0.11.2" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" dependencies = [ - "instant", "lock_api", "parking_lot_core", ] [[package]] name = "parking_lot_core" -version = "0.8.5" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" dependencies = [ "cfg-if 1.0.0", - "instant", "libc", "redox_syscall", "smallvec", - "winapi 0.3.9", + "windows-sys", ] [[package]] @@ -2035,7 +2030,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" dependencies = [ "phf_shared", - "rand 0.8.4", + "rand 0.8.5", ] [[package]] @@ -2177,7 +2172,7 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6" dependencies = [ - "rand 0.8.4", + "rand 0.8.5", ] [[package]] @@ -2199,19 +2194,18 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc 0.2.0", + "rand_hc", ] [[package]] name = "rand" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.1", "rand_core 0.6.3", - "rand_hc 0.3.1", ] [[package]] @@ -2249,7 +2243,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.4", + "getrandom 0.2.5", ] [[package]] @@ -2262,15 +2256,6 @@ dependencies = [ ] [[package]] -name = "rand_hc" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" -dependencies = [ - "rand_core 0.6.3", -] - -[[package]] name = "redox_syscall" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2285,7 +2270,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ - "getrandom 0.2.4", + "getrandom 0.2.5", "redox_syscall", ] @@ -2324,9 +2309,9 @@ dependencies = [ [[package]] name = "retain_mut" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11000e6ba5020e53e7cc26f73b91ae7d5496b4977851479edb66b694c0675c21" +checksum = "8c31b5c4033f8fdde8700e4657be2c497e7288f01515be52168c631e2e4d4086" [[package]] name = "retry-error" @@ -2374,7 +2359,7 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8", - "rand 0.8.4", + "rand 0.8.5", "subtle", "zeroize", ] @@ -2476,9 +2461,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d09d3c15d814eda1d6a836f2f2b56a6abc1446c8a34351cb3180d3db92ffe4ce" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" dependencies = [ "bitflags", "core-foundation", @@ -2489,9 +2474,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e90dd10c41c6bfc633da6e0c659bd25d31e0791e5974ac42970267d59eba87f7" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" dependencies = [ "core-foundation-sys", "libc", @@ -2499,9 +2484,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" +checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d" [[package]] name = "serde" @@ -2525,11 +2510,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d23c1ba4cf0efd44be32017709280b32d1cea5c3f1275c3b6d9e8bc54f758085" +checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" dependencies = [ - "itoa 1.0.1", + "itoa", "ryu", "serde", ] @@ -2551,7 +2536,7 @@ checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.1", + "digest 0.10.3", ] [[package]] @@ -2569,22 +2554,22 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c3bd8169c58782adad9290a9af5939994036b76187f7b4f0e6de91dbbfc0ec" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.1", + "digest 0.10.3", ] [[package]] name = "sha3" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f935e31cf406e8c0e96c2815a5516181b7004ae8c5f296293221e9b1e356bd" +checksum = "881bf8156c87b6301fc5ca6b27f11eeb2761224c7081e69b409d5a1951a70c86" dependencies = [ - "digest 0.10.1", + "digest 0.10.3", "keccak", ] @@ -2791,7 +2776,7 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "004cbc98f30fa233c61a38bc77e96a9106e65c88f2d3bef182ae952027e5753d" dependencies = [ - "itoa 1.0.1", + "itoa", "libc", "num_threads", "quickcheck", @@ -2821,19 +2806,20 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.16.1" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c27a64b625de6d309e8c57716ba93021dccf1b3b5c97edd6d3dd2d2135afc0a" +checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" dependencies = [ "bytes", "libc", "memchr", - "mio 0.7.14", + "mio 0.8.0", "num_cpus", "once_cell", "parking_lot", "pin-project-lite", "signal-hook-registry", + "socket2", "tokio-macros", "winapi 0.3.9", ] @@ -2891,9 +2877,9 @@ version = "0.0.3" dependencies = [ "arrayref", "bytes", - "digest 0.10.1", + "digest 0.10.3", "generic-array", - "getrandom 0.2.4", + "getrandom 0.2.5", "hex-literal", "signature", "thiserror", @@ -2911,7 +2897,7 @@ dependencies = [ "caret", "hex", "hex-literal", - "rand 0.8.4", + "rand 0.8.5", "thiserror", "tor-bytes", "tor-cert", @@ -2926,7 +2912,7 @@ version = "0.0.3" dependencies = [ "base64", "caret", - "digest 0.10.1", + "digest 0.10.3", "hex-literal", "signature", "tor-bytes", @@ -2945,7 +2931,7 @@ dependencies = [ "futures-await-test", "hex-literal", "postage", - "rand 0.8.4", + "rand 0.8.5", "thiserror", "tor-error", "tor-linkspec", @@ -2977,7 +2963,7 @@ dependencies = [ "humantime-serde", "itertools", "pin-project", - "rand 0.8.4", + "rand 0.8.5", "retry-error", "serde", "static_assertions", @@ -3018,7 +3004,7 @@ dependencies = [ name = "tor-consdiff" version = "0.0.3" dependencies = [ - "digest 0.10.1", + "digest 0.10.3", "hex", "thiserror", "tor-llcrypto", @@ -3056,7 +3042,7 @@ dependencies = [ "base64", "derive_builder", "derive_more", - "digest 0.10.1", + "digest 0.10.3", "event-listener", "float_eq", "fslock", @@ -3069,7 +3055,7 @@ dependencies = [ "memmap2", "once_cell", "postage", - "rand 0.8.4", + "rand 0.8.5", "retry-error", "rusqlite", "serde", @@ -3122,7 +3108,7 @@ dependencies = [ "humantime-serde", "itertools", "pin-project", - "rand 0.8.4", + "rand 0.8.5", "retain_mut", "serde", "thiserror", @@ -3160,19 +3146,19 @@ dependencies = [ "cargo-husky", "cipher", "curve25519-dalek", - "digest 0.10.1", + "digest 0.10.3", "ed25519-dalek", - "getrandom 0.2.4", + "getrandom 0.2.5", "hex", "hex-literal", - "rand 0.8.4", + "rand 0.8.5", "rand_core 0.5.1", "rand_core 0.6.3", "rsa", "serde", "serde_test", "sha-1", - "sha2 0.10.1", + "sha2 0.10.2", "sha3", "signature", "simple_asn1", @@ -3191,7 +3177,7 @@ dependencies = [ "derive_more", "hex", "hex-literal", - "rand 0.8.4", + "rand 0.8.5", "rand_chacha 0.3.1", "serde", "signature", @@ -3213,12 +3199,12 @@ dependencies = [ "base64", "bitflags", "derive_more", - "digest 0.10.1", + "digest 0.10.3", "hex", "hex-literal", "once_cell", "phf", - "rand 0.8.4", + "rand 0.8.5", "serde", "signature", "thiserror", @@ -3254,14 +3240,14 @@ dependencies = [ "bytes", "cipher", "coarsetime", - "digest 0.10.1", + "digest 0.10.3", "futures", "generic-array", "hex", "hex-literal", "hkdf", "hmac", - "rand 0.8.4", + "rand 0.8.5", "rand_core 0.6.3", "subtle", "thiserror", @@ -3316,7 +3302,7 @@ dependencies = [ "futures", "futures-await-test", "pin-project", - "rand 0.8.4", + "rand 0.8.5", "thiserror", "tor-rtcompat", "tracing", @@ -3350,9 +3336,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.29" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" +checksum = "f6c650a8ef0cd2dd93736f033d21cbd1224c5a967aa0c258d00fcf7dafef9b9f" dependencies = [ "cfg-if 1.0.0", "pin-project-lite", @@ -3373,9 +3359,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e" +checksum = "8276d9a4a3a558d7b7ad5303ad50b53d58264641b82914b7ada36bd762e7a716" dependencies = [ "proc-macro2", "quote", @@ -3384,18 +3370,19 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" +checksum = "03cfcb51380632a72d3111cb8d3447a8d908e577d31beeac006f836383d29a23" dependencies = [ "lazy_static", + "valuable", ] [[package]] name = "tracing-journald" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9863a586a2ede0c98ccfd14cedecaa1f59a94eb1029bc33a71c7518235d5e886" +checksum = "36a63bcca9cab23195673d7c3c7db8aff5fc062b82cd1e51c396d9dc26968c3c" dependencies = [ "libc", "tracing-core", @@ -3415,9 +3402,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5312f325fe3588e277415f5a6cca1f4ccad0f248c4cd5a4bd33032d7286abc22" +checksum = "9e0ab7bdc962035a87fba73f3acca9b8a8d0034c2e6f60b84aeaaddddc155dce" dependencies = [ "ansi_term", "lazy_static", @@ -3512,6 +3499,12 @@ dependencies = [ ] [[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] name = "value-bag" version = "1.0.0-alpha.8" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3729,6 +3722,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] +name = "windows-sys" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" + +[[package]] +name = "windows_i686_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" + +[[package]] +name = "windows_i686_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" + +[[package]] name = "ws2_32-sys" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3779,9 +3815,9 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81e8f13fef10b63c06356d65d416b070798ddabcadc10d3ece0c5be9b3c7eddb" +checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" dependencies = [ "proc-macro2", "quote", diff --git a/arti-corpora b/arti-corpora -Subproject ae2b97eae71beee596ba4bce8c126d6990cffb7 +Subproject bd32029dad1bd8920d71a41ad93ec06c86e0401 diff --git a/crates/arti-client/Cargo.toml b/crates/arti-client/Cargo.toml index 5647f15f7..728a673dd 100644 --- a/crates/arti-client/Cargo.toml +++ b/crates/arti-client/Cargo.toml @@ -16,7 +16,9 @@ async-std = [ "tor-rtcompat/async-std" ] tokio = [ "tor-rtcompat/tokio", "tor-proto/tokio" ] native-tls = [ "tor-rtcompat/native-tls" ] rustls = [ "tor-rtcompat/rustls" ] -static = [ "tor-rtcompat/static", "tor-dirmgr/static" ] +static = [ "static-sqlite", "static-native-tls" ] +static-sqlite = [ "tor-dirmgr/static" ] +static-native-tls = [ "tor-rtcompat/static", "native-tls" ] error_detail = [ ] # Enable experimental APIs that are not yet officially supported. diff --git a/crates/arti-client/src/lib.rs b/crates/arti-client/src/lib.rs index 523690ccf..79d6728b9 100644 --- a/crates/arti-client/src/lib.rs +++ b/crates/arti-client/src/lib.rs @@ -163,8 +163,12 @@ //! * `async-std` -- build with [async-std](https://async.rs/) support //! * `rustls` -- build with the [rustls](https://github.com/rustls/rustls) crate for TLS support //! * `static` -- link with static versions of Arti's system dependencies, like SQLite and -//! OpenSSL -//! * `experimental-api` -- Build with experimental, unstable API support. Note +//! OpenSSL (⚠ Warning ⚠: this feature will include a dependency on native-tls, even if you weren't +//! planning to use native-tls. If you only want to build with a static sqlite library, enable the +//! `static-sqlite` feature. We'll look for better solutions here in the future.) +//! * `static-sqlite` -- link with a static version of sqlite. +//! * `static-native-tls` -- link with a static version of `native-tls`. Enables `native-tls`. +//! * `experimental-api` -- build with experimental, unstable API support. Note //! that these APIs are NOT covered by semantic versioning guarantees: we might //! break them or remove them between patch versions. //! * `error_detail` -- expose the `arti_client::Error` inner error type. Note diff --git a/crates/arti/Cargo.toml b/crates/arti/Cargo.toml index e0fd251ec..48b6bff5a 100644 --- a/crates/arti/Cargo.toml +++ b/crates/arti/Cargo.toml @@ -16,7 +16,9 @@ async-std = [ "arti-client/async-std", "tor-rtcompat/async-std", "async-ctrlc", tokio = [ "tokio-crate", "arti-client/tokio", "tor-rtcompat/tokio" ] native-tls = [ "arti-client/native-tls", "tor-rtcompat/native-tls" ] rustls = [ "arti-client/rustls", "tor-rtcompat/rustls" ] -static = [ "arti-client/static" ] +static = [ "static-sqlite", "static-native-tls" ] +static-sqlite = [ "arti-client/static-sqlite" ] +static-native-tls = [ "arti-client/static-native-tls", "native-tls" ] journald = [ "tracing-journald" ] [dependencies] diff --git a/crates/arti/src/main.rs b/crates/arti/src/main.rs index e840fa05b..12583cce0 100644 --- a/crates/arti/src/main.rs +++ b/crates/arti/src/main.rs @@ -40,8 +40,23 @@ //! `async-std`: Use the async-std runtime library as our backend. //! This feature has no effect unless building with `--no-default-features` //! to disable tokio. + +//! `native-tls` -- Build with support for the `native_tls` TLS +//! backend. (default) +//! +//! `rustls` -- Build with support for the `rustls` TLS backend. +//! +//! `static` -- Link with static versions of your system dependencies, +//! including sqlite and/or openssl. (⚠ Warning ⚠: this feature will +//! include a dependency on native-tls, even if you weren't planning +//! to use native-tls. If you only want to build with a static sqlite +//! library, enable the `static-sqlite` feature. We'll look for +//! better solutions here in the future.) +//! +//! `static-sqlite` -- Link with a static version of sqlite. //! -//! `static`: Try to link a single static binary. +//! `static-native-tls` -- Link with a static version of `native-tls`. +//! Enables `native-tls`. //! //! # Limitations //! diff --git a/crates/tor-circmgr/src/impls.rs b/crates/tor-circmgr/src/impls.rs index 8d9d3904b..f15c39d96 100644 --- a/crates/tor-circmgr/src/impls.rs +++ b/crates/tor-circmgr/src/impls.rs @@ -7,6 +7,7 @@ use crate::{DirInfo, Error, Result}; use async_trait::async_trait; use futures::future::OptionFuture; use std::convert::TryInto; +use std::fmt::{self, Debug}; use std::sync::Arc; use tor_error::internal; use tor_proto::circuit::{CircParameters, ClientCirc}; @@ -41,6 +42,17 @@ pub(crate) struct Plan { guard_usable: Option<tor_guardmgr::GuardUsable>, } +impl Debug for Plan { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_struct("Plan") + .field("final_spec", &self.final_spec) + .field("path", &self.path) + .field("params", &self.params) + .field("guard_status", &self.guard_status) + .finish_non_exhaustive() + } +} + impl MockablePlan for Plan {} #[async_trait] diff --git a/crates/tor-circmgr/src/mgr.rs b/crates/tor-circmgr/src/mgr.rs index fff1c80b9..a18d6c2b9 100644 --- a/crates/tor-circmgr/src/mgr.rs +++ b/crates/tor-circmgr/src/mgr.rs @@ -37,7 +37,7 @@ use futures::stream::{FuturesUnordered, StreamExt}; use futures::task::SpawnExt; use std::collections::HashMap; use std::convert::TryInto; -use std::fmt::Debug; +use std::fmt::{self, Debug}; use std::hash::Hash; use std::panic::AssertUnwindSafe; use std::sync::{self, Arc, Weak}; @@ -160,7 +160,7 @@ pub(crate) trait MockablePlan { pub(crate) trait AbstractCircBuilder: Send + Sync { /// The specification type describing what operations circuits can /// be used for. - type Spec: AbstractSpec + Send + Sync; + type Spec: AbstractSpec + Debug + Send + Sync; /// The circuit type that this builder knows how to build. type Circ: AbstractCirc + Send + Sync; /// An opaque type describing how a given circuit will be built. @@ -170,7 +170,7 @@ pub(crate) trait AbstractCircBuilder: Send + Sync { // But I don't think that rust can do that. // HACK(eta): I don't like the fact that `MockablePlan` is necessary here. - type Plan: Send + MockablePlan; + type Plan: Send + Debug + MockablePlan; // TODO: I'd like to have a Dir type here to represent // create::DirInfo, but that would need to be parameterized too, @@ -457,6 +457,15 @@ struct CircBuildPlan<B: AbstractCircBuilder> { pending: Arc<PendingEntry<B>>, } +impl<B: AbstractCircBuilder> Debug for CircBuildPlan<B> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_struct("CircBuildPlan") + .field("plan", &self.plan) + .field("sender", &self.sender) + .finish_non_exhaustive() + } +} + /// The inner state of an [`AbstractCircMgr`]. struct CircList<B: AbstractCircBuilder> { /// A map from circuit ID to [`OpenEntry`] values for all managed @@ -576,6 +585,7 @@ impl<B: AbstractCircBuilder> CircList<B> { .pending_circs .iter() .filter(|p| p.supports(usage)) + .filter(|p| !matches!(p.receiver.peek(), Some(Err(_)))) .collect(); if result.is_empty() { @@ -926,7 +936,18 @@ impl<B: AbstractCircBuilder + 'static, R: Runtime> AbstractCircMgr<B, R> { let mut retry_error = RetryError::in_attempt_to("wait for circuits"); while let Some((src, id)) = incoming.next().await { - if let Ok(Ok(ref id)) = id { + let id = match id { + Err(oneshot::Canceled) => { + debug!( + "{:?} went away (Canceled), quitting take_action right away", + src + ); + retry_error.push(Error::PendingCanceled); + return Err(retry_error); + } + Ok(id) => id, + }; + if let Ok(ref id) = id { // Great, we have a circuit. See if we can use it! let mut list = self.circs.lock().expect("poisoned lock"); if let Some(ent) = list.get_open_mut(id) { @@ -1701,7 +1722,6 @@ mod test { } #[test] - #[ignore] // This test is unreliable; see arti#210 fn request_retried() { tor_rtcompat::test_with_one_runtime!(|rt| async { let rt = MockSleepRuntime::new(rt); diff --git a/crates/tor-circmgr/src/path.rs b/crates/tor-circmgr/src/path.rs index cc3600cad..b02afa40f 100644 --- a/crates/tor-circmgr/src/path.rs +++ b/crates/tor-circmgr/src/path.rs @@ -87,7 +87,7 @@ impl<'a> TorPath<'a> { } /// A path composed entirely of owned components. -#[derive(Clone)] +#[derive(Clone, Debug)] pub(crate) enum OwnedPath { /// A path where we only know how to make circuits via CREATE_FAST. ChannelOnly(OwnedChanTarget), diff --git a/crates/tor-guardmgr/Cargo.toml b/crates/tor-guardmgr/Cargo.toml index 07df94622..f72fa443d 100644 --- a/crates/tor-guardmgr/Cargo.toml +++ b/crates/tor-guardmgr/Cargo.toml @@ -24,7 +24,7 @@ tor-netdir = { path="../tor-netdir", version = "0.0.4"} tor-linkspec = { path="../tor-linkspec", version = "0.0.3"} tor-llcrypto = { path="../tor-llcrypto", version = "0.0.3"} tor-persist = { path="../tor-persist", version = "0.0.3"} -tor-proto = { path="../tor-proto", version = "0.0.4", features=["traffic-timestamp"] } +tor-proto = { path="../tor-proto", version = "0.0.4" } tor-rtcompat = { path="../tor-rtcompat", version = "0.0.4"} tor-units = { path="../tor-units", version = "0.0.3"} diff --git a/crates/tor-guardmgr/src/pending.rs b/crates/tor-guardmgr/src/pending.rs index 58b83e762..cc6222f76 100644 --- a/crates/tor-guardmgr/src/pending.rs +++ b/crates/tor-guardmgr/src/pending.rs @@ -14,6 +14,7 @@ use futures::{ Future, }; use pin_project::pin_project; +use std::fmt::{self, Debug}; use std::pin::Pin; use std::sync::atomic::{AtomicU64, Ordering}; use std::task::{Context, Poll}; @@ -121,6 +122,16 @@ pub struct GuardMonitor { snd: Option<UnboundedSender<daemon::Msg>>, } +impl Debug for GuardMonitor { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_struct("GuardMonitor") + .field("id", &self.id) + .field("pending_status", &self.pending_status) + .field("ignore_indeterminate", &self.ignore_indeterminate) + .finish_non_exhaustive() + } +} + impl GuardMonitor { /// Create a new GuardMonitor object. pub(crate) fn new(id: RequestId, snd: UnboundedSender<daemon::Msg>) -> Self { diff --git a/crates/tor-proto/Cargo.toml b/crates/tor-proto/Cargo.toml index 13303eb8d..2962fd415 100644 --- a/crates/tor-proto/Cargo.toml +++ b/crates/tor-proto/Cargo.toml @@ -15,7 +15,6 @@ default = [] hs = [] ntor_v3 = [] tokio = ["tokio-crate", "tokio-util"] -traffic-timestamp = ["coarsetime"] [dependencies] tor-llcrypto = { path = "../tor-llcrypto", version = "0.0.3"} @@ -30,6 +29,7 @@ tor-cell = { path = "../tor-cell", version = "0.0.3"} arrayref = "0.3" bytes = "1" cipher = "0.3.0" +coarsetime = "0.1.20" digest = "0.10.0" futures = "0.3.14" asynchronous-codec = "0.6.0" @@ -47,8 +47,6 @@ zeroize = "1" tokio-crate = { package = "tokio", version = "1.7", optional = true } tokio-util = { version = "0.7.0", features = ["compat"], optional = true } -coarsetime = { version = "0.1.20", optional = true } - [dev-dependencies] tor-rtcompat = { path = "../tor-rtcompat", version = "0.0.4", features = [ "tokio", "native-tls" ] } hex-literal = "0.3" diff --git a/crates/tor-proto/src/lib.rs b/crates/tor-proto/src/lib.rs index d638c2d47..9ffc6fba5 100644 --- a/crates/tor-proto/src/lib.rs +++ b/crates/tor-proto/src/lib.rs @@ -130,7 +130,6 @@ pub type Result<T> = std::result::Result<T, Error>; /// Timestamp object that we update whenever we get incoming traffic. /// /// Used to implement [`time_since_last_incoming_traffic`] -#[cfg(feature = "traffic-timestamp")] static LAST_INCOMING_TRAFFIC: util::ts::OptTimestamp = util::ts::OptTimestamp::new(); /// Called whenever we receive incoming traffic. @@ -138,16 +137,11 @@ static LAST_INCOMING_TRAFFIC: util::ts::OptTimestamp = util::ts::OptTimestamp::n /// Used to implement [`time_since_last_incoming_traffic`] #[inline] pub(crate) fn note_incoming_traffic() { - #[cfg(feature = "traffic-timestamp")] - { - LAST_INCOMING_TRAFFIC.update(); - } + LAST_INCOMING_TRAFFIC.update(); } /// Return the amount of time since we last received "incoming traffic". /// -/// Requires that the `traffic-timestamp` feature is enabled. -/// /// This is a global counter, and is subject to interference from /// other users of the `tor_proto`. Its only permissible use is for /// checking how recently we have been definitely able to receive @@ -157,7 +151,6 @@ pub(crate) fn note_incoming_traffic() { /// cell, and whenever we complete a channel handshake. /// /// Returns `None` if we never received "incoming traffic". -#[cfg(feature = "traffic-timestamp")] pub fn time_since_last_incoming_traffic() -> Option<std::time::Duration> { LAST_INCOMING_TRAFFIC.time_since_update().map(Into::into) } diff --git a/crates/tor-proto/src/util.rs b/crates/tor-proto/src/util.rs index f184637e8..515ef5a26 100644 --- a/crates/tor-proto/src/util.rs +++ b/crates/tor-proto/src/util.rs @@ -2,5 +2,4 @@ pub(crate) mod ct; pub(crate) mod err; -#[cfg(feature = "traffic-timestamp")] pub(crate) mod ts; |