summaryrefslogtreecommitdiff
path: root/crates/tor-chanmgr
Commit message (Collapse)AuthorAgeFilesLines
* Bump all crates to 0.1.0arti-v0.1.0Nick Mathewson2022-03-011-8/+8
|
* tor-proto: Split IoErr based on when it occursNick Mathewson2022-02-231-1/+1
| | | | | | | We want to distinguish handshake failures from errors later on in the channel's lifetime. Closes #359.
* Rename TorConnectionFailed to TorAccessFailedNick Mathewson2022-02-221-2/+2
|
* tor-chanmgr: use Bug types.Nick Mathewson2022-02-164-16/+24
|
* Implement HasKind for tor-chanmgr::ErrorNick Mathewson2022-02-161-2/+6
| | | | (There will be a folowup to work on internal errors here.)
* Change deny(clippy::all) to warn(clippy::all).Nick Mathewson2022-02-141-1/+1
| | | | Closes #338.
* Fix typosDimitris Apostolou2022-02-101-1/+1
|
* Merge branch 'error-improvements' into 'main'eta2022-02-082-12/+23
|\ | | | | | | | | Hopefully uncontroversial improvements to new Error code See merge request tpo/core/arti!291
| * Make SpawnError wrappers contain a 'spawning' stringNick Mathewson2022-02-042-12/+23
| | | | | | | | | | (By our convention, these errors should say what we were trying to spawn when the error occurred.)
* | Clean up ChannelState ready_to_expireYuan Lyu2022-02-061-10/+9
| |
* | Expire channels that have been unused for too longYuan Lyu2022-02-045-16/+184
|/
* channel errors: Include what we were doingIan Jackson2022-02-042-11/+16
|
* errors: Add some TODOs as per discussion commentsIan Jackson2022-02-041-0/+5
|
* tor-chanmgr::Error: impl HasKindIan Jackson2022-02-041-0/+13
|
* tor-chanmgr: Handle IO errora in the new styleIan Jackson2022-02-042-14/+26
| | | | | Two ? in the tests become expects, which will do. That avoids having to construct a proper error with context here.
* spawn errors: Fix arti-client, tor-chanmgr, tor-circmgrIan Jackson2022-02-041-3/+9
| | | | | | | Provide an enum variant to contain the SpawnError and a From impl. We use `#[from]` here because it doesn't really make sense to attach any context, as it's not likely to be very relevant.
* tor-error: Add as a ddpendency to many cratesIan Jackson2022-02-041-0/+1
| | | | Doing this here makes it easier when I rebase/reorder things
* Upgrade required version of futures crate to 0.3.14Nick Mathewson2022-02-011-1/+1
| | | | | Earlier versions have a bug in UnboundedReceiver that make our new dirclient tests fail.
* Bump the patch version of every crate that changed since 0.0.3Nick Mathewson2022-01-311-5/+5
|
* Make the native-tls crate optional.Nick Mathewson2022-01-261-1/+1
| | | | | | | | | | | This commit puts the native-tls crate behind a feature. The feature is off-by-default in the tor-rtcompat crate, but can be enabled either from arti or arti-client. There is an included script that I used to test that tor-rtcompat could build and run its tests with all subsets of its features. Closes #300
* bootstrap reporting: Documentation fixups from review.Nick Mathewson2022-01-191-1/+12
|
* tor-chanmgr: Add bootstrap/status reporting.Nick Mathewson2022-01-184-5/+523
| | | | | | | | | | | | | | | | | | The information is pretty basic here: we use "have we been able to connect/TLS-handshake/Tor-handshake" as a proxy for "are we on the internet? Are we on a reasonably unfiltered part of the internet?" Eventually we'll want to make the information gathered and exported more detailed: I've noted a few places in the code. For now, however, this is about as good as C Tor does today, and it should be a good starting point. This uses a slightly different design from tor-dirmgr. Instead of exporting an entire state structure via `postage::watch`, it exports only the parts of that structure which the user is supposed to read. I think that's more reasonable in this case because most of the possible internal transitions in the tor-chanmgr state don't cause a change in the exposed status.
* chanmgr: get rid of Arc around ChannelIan Jackson2022-01-134-44/+46
|
* Bump all crate versions to 0.0.3.Nick Mathewson2022-01-111-7/+7
|
* Minimize the required version for each dependency.Nick Mathewson2022-01-071-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I found these versions empirically, by using the following process: First, I used `cargo tree --depth 1 --kind all` to get a list of every immediate dependency we had. Then, I used `cargo upgrade --workspace package@version` to change each dependency to the earliest version with which (in theory) the current version is semver-compatible. IOW, if the current version was 3.2.3, I picked "3". If the current version was 0.12.8, I picked "0.12". Then, I used `cargo +nightly upgrade -Z minimal-versions` to downgrade Cargo.lock to the minimal listed version for each dependency. (I had to override a few packages; see .gitlab-ci.yml for details). Finally, I repeatedly increased the version of each of our dependencies until our code compiled and the tests passed. Here's what I found that we need: anyhow >= 1.0.5: Earlier versions break our hyper example. async-broadcast >= 0.3.2: Earlier versions fail our tests. async-compression 0.3.5: Earlier versions handled futures and tokio differently. async-trait >= 0.1.2: Earlier versions are too buggy to compile our code. clap 2.33.0: For Arg::default_value_os(). coarsetime >= 0.1.20: exposed as_ticks() function. curve25519-dalek >= 3.2: For is_identity(). generic-array 0.14.3: Earlier versions don't implement From<&[T; 32]> httparse >= 1.2: Earlier versions didn't implement Error. itertools at 0.10.1: For at_most_once. rusqlite >= 0.26.3: for backward compatibility with older rustc. serde 1.0.103: Older versions break our code. serde_json >= 1.0.50: Since we need its Value type to implement Eq. shellexpand >= 2.1: To avoid a broken dirs crate version. tokio >= 1.4: For Handle::block_on(). tracing >= 0.1.18: Previously, tracing_core and tracing had separate LevelFilter types. typenum >= 1.12: Compatibility with rust-crypto crates x25519-dalek >= 1.2.0: For was_contributory(). Closes #275.
* extend lints to include 'clippy::all'Daniel Eades2021-12-281-0/+1
|
* tor-chanmgr: Fix happy eyeballs comment grammar in builder.rsNeel Chauhan2021-12-141-3/+3
|
* Make TlsConnector wrap TCP connections, not create its owneta2021-12-071-2/+5
| | | | | | | | | | | | | | | | | | | | `tor-rtcompat`'s `TlsConnector` trait previously included a method to create a TLS-over-TCP connection, which implied creating a TCP stream inside that method. This commit changes that, and makes the function wrap a TCP stream, as returned from the runtime's `TcpProvider` trait implementation, instead. This means you can actually override `TcpProvider` and have it apply to *all* connections Arti makes, which is useful for issues like arti#235 and other cases where you want to have a custom TCP stream implementation. This required updating the mock TCP/TLS types in `tor-rtmock` slightly; due to the change in API, we now store whether a `LocalStream` should actually be a TLS stream inside the stream itself, and check this property on reads/writes in order to detect misuse. The fake TLS wrapper checks this property and removes it in order to "wrap" the stream, making reads and writes work again.
* Resolve roughly half of the XXXXs.Nick Mathewson2021-12-061-3/+2
| | | | | | | | We want to only use TODO in the codebase for non-blockers, and open tickets for anything that is a bigger blocker than a TODO. These XXXXs seem like definite non-blockers to me. Part of arti#231.
* tor-linkspec: Remove redundant method; add more tests.Nick Mathewson2021-12-041-2/+2
| | | | | | | The redundant method was a `to_owned` that probably shouldn't have been called that. It was only used in one place. The tests should get tor-linkspec's line coverage up above 90%.
* Bump every crate by one patch version.Nick Mathewson2021-11-291-7/+7
|
* add semicolons if nothing returnedDaniel Eades2021-11-252-1/+2
|
* Remove all remaining dbg! instances.Nick Mathewson2021-11-041-1/+0
|
* Get rid of tor-proto's ChannelImpl, and use the reactor more insteadeta2021-11-031-1/+3
| | | | | | | | | | | | | | | | | | | Instead of awkwardly sharing the internals of a `tor-proto` `Channel` between the reactor task and any other tasks, move most of the internals into the reactor and have other tasks communicate with the reactor via message-passing to allocate circuits and send cells. This makes a lot of things simple, and has convenient properties like not needing to wrap the `Channel` in an `Arc` (though some places in the code still do this for now). A lot of test code required tweaking in order to deal with the refactor; in fact, fixing the tests probably took longer than writing the mainline code (!). Importantly, we now use `tokio`'s `tokio::test` annotation instead of `async_test`, so that we can run things in the background (which is required to have reactors running for the circuit tests). This is an instance of #205, and also kind of #217.
* Bump all crate versions to 0.0.1Nick Mathewson2021-10-291-7/+7
|
* tor-chanmgr: remove PendingChanError as unnecessary.Nick Mathewson2021-10-282-37/+6
|
* Remove #![allow_unused] in tor_chanmgr::mgrNick Mathewson2021-10-212-1/+4
|
* enable checked_conversions lint.Nick Mathewson2021-10-091-0/+1
|
* fix/silence clippy lints in test modulesDaniel Eades2021-09-083-0/+3
|
* Move all crates into a `crates` subdirectory.Nick Mathewson2021-08-278-0/+1183
This will cause some pain for now, but now is really the best time to do this kind of thing.