aboutsummaryrefslogtreecommitdiff
path: root/Cargo.lock
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge branch 'arti-bench' into 'main'eta2021-12-161-0/+71
|\ | | | | | | | | Introduce an experimental benchmarking utility for Arti See merge request tpo/core/arti!195
| * Introduce an experimental benchmarking utility for Artieta2021-12-161-0/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new `arti-bench` crate does a simple end-to-end benchmark test embedding Arti: it generates some random data (of configurable amount, depending on command-line parameters), and then sends said data back and forth via Arti (which should be configured to use a local Chutney network). Additionally, the benchmark can also be run via a local SOCKS5 server (in order to benchmark the performance via a local Chutney node, for comparison). The `tests/chutney/arti-bench.sh` sets up and tears down Chutney as required to make this work. This is very much a first cut; there are many things that should eventually get added, such as support for multiple connections, JSON output capabilities, running multiple tests, ...
* | Refactor directory events to use a FlagPublisher mechanism.Nick Mathewson2021-12-141-0/+1
|/ | | | | | | | This approach tries to preserve the current interface, but uses a counter-based event backend to implement a coalescing stream of events that can be represented as small integers. The advantage here is that publishing events no longer needs to be a blocking operation, since there is no queue to fill up.
* Merge branch 'reconfigure' into 'main'eta2021-12-131-0/+25
|\ | | | | | | | | Make most arti-client fields reconfigurable. See merge request tpo/core/arti!181
| * Add a few tests to tor-config.Nick Mathewson2021-12-071-0/+24
| |
| * Sketch API for reconfiguration.Nick Mathewson2021-12-071-0/+1
| | | | | | | | | | | | | | This patch doesn't actually make anything reconfigurable, but it does create an API that will tell you "you can't change the value of that!" If the API looks reasonable, I can start making it possible to change the values of individual items.
* | update rusqlite and revert minimal version changeTrinity Pointard2021-12-091-2/+2
| |
* | Upgrade to digest v0.10.0Nick Mathewson2021-12-071-39/+56
|/ | | | | We generally try to track the latest rust-crypto traits when we can: fortunately, this upgrade didn't break much, considering.
* Merge branch 'bug252' into 'main'eta2021-12-071-0/+1
|\ | | | | | | | | | | | | Make DNS fields in arti-client/src/client.rs configurable Closes #252 See merge request tpo/core/arti!171
| * Make DNS fields in arti-client/src/client.rs configurableNeel Chauhan2021-12-031-0/+1
| |
* | Merge branch 'preemptive-config' into 'main'eta2021-12-071-0/+1
|\ \ | | | | | | | | | | | | | | | | | | Allow configurability on preemptive circuits Closes #245 See merge request tpo/core/arti!164
| * | Allow configurability on preemptive circuitsNeel Chauhan2021-12-071-0/+1
| |/
* / tor-netdir: Use reproducible RNG in tests.Nick Mathewson2021-12-061-0/+1
|/ | | | | | The rand crate's documentation says it's not okay to rely on StdRng having reproducible output. So instead, let's switch to ChaCha12Rng instead (which is what StrRng currently uses).
* tor-netdir: Use bitflags for WeightKindNeel Chauhan2021-11-301-0/+1
|
* One more "cargo update" before the release.Nick Mathewson2021-11-301-15/+6
|
* Bump every crate by one patch version.Nick Mathewson2021-11-291-28/+28
|
* Run "cargo update" to get latest versions.Nick Mathewson2021-11-291-92/+39
| | | | | | | Also fix a couple of warnings introduced by now-unneeded imports with new ed25519 crate. This is part of the process for releasing our next version.
* Merge branch 'arti-client-config' into 'main'eta2021-11-221-0/+1
|\ | | | | | | | | Further configuration refactoring See merge request tpo/core/arti!137
| * Ensure that every section-level config type has a builder() function.Nick Mathewson2021-11-211-0/+1
| |
* | Merge commit '98f38dc' (arti!131) into HEADeta2021-11-221-0/+30
|\ \ | |/ |/| | | | | This commit message totally gives away the cursed way in which I use git. branches? what are those?
| * Initial cut at a typed event framework for arti (arti#230).eta2021-11-221-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implements a basic typed event broadcast mechanism, as described in arti#230: consumers of the new `tor-events` crate can emit `TorEvent` events, which others can consume via the `TorEventReceiver`. Under the hood, the crate uses the `async-broadcast` (https://github.com/smol-rs/async-broadcast) crate, and a `futures::mpsc::UnboundedSender` for the event emitters; these are glued together in the `EventReactor`, which must be run in a background thread for things to work. (This is done so event sending is always cheap and non-blocking, since `async-broadcast` senders don't have this functionality.) Additionally, the `TorEventKind` type is used to implement selective event reception / emission: receivers can subscribe to certain event types (and in fact start out receiving nothing), which filters the set of events they receive. Having no subscribers for a given event type means it won't even be emitted in the first place, making things more efficient.
* | Move top-level configuration downwards from `arti` to `arti-config`.Nick Mathewson2021-11-181-5/+22
| | | | | | | | | | | | | | | | To do this at all neatly, I had to split out `tor-config` from `arti-config` again, and putting the lower level stuff (paths, builder errors) into tor-config. I also changed our use of derive_builder to always use a common error type, to avoid error type proliferation.
* | Merge remote-tracking branch 'origin/mr/131'Nick Mathewson2021-11-171-44/+44
|\ \
| * | update dependenciesTrinity Pointard2021-11-171-46/+46
| |/
* | Remove dependency from arti-client to tor-config.Nick Mathewson2021-11-161-1/+1
| | | | | | | | | | I'm about to make tor-config a higher-level module, so it can't be a dependency for tor-config.
* | Remove unused "dirs" dependency from tor-persist.Nick Mathewson2021-11-161-1/+0
| |
* | tor-proto: Use tor-rtcompat macros for testing, not tokio.Nick Mathewson2021-11-151-0/+1
| | | | | | | | Closes #222.
* | Update to simple_asn1 0.6.1.Nick Mathewson2021-11-141-2/+2
|/ | | | | | This is a security fix for a panic. Closes #236
* Completely overhaul the tor-proto circuit reactoreta2021-11-121-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather like e8e9699c3c239d6c30f9ad414f15d3bad6ec03fd ("Get rid of tor-proto's ChannelImpl, and use the reactor more instead"), this admittedly rather large commit refactors the way circuits in `tor-proto` work, centralising all of the logic in one large nonblocking reactor which other things send messages into and out of, instead of having a bunch of `-Impl` types that are protected by mutexes. Congestion control becomes a lot simpler with this refactor, since the reactor can manage both stream- and circuit-level congestion control unilaterally without having to share this information with consumers, meaning we can get rid of some locks. The way streams work also changes, in order to facilitate better handling of backpressure / fairness between streams: each stream now has a set of channels to send and receive messages over, instead of sending relay cells directly onto the channel (now, the reactor pulls messages off each stream in each map, and tries to avoid doing so if it won't be able to forward them yet). Additionally, a lot of "close this circuit / stream" messages aren't required any more, since that state is simply indicated by one end of a channel going away. This should make cleanup a lot less brittle. Getting all of this to work involved writing a fair deal of intricate nonblocking code in Reactor::run_once that tries very hard to be mindful of making backpressure work correctly (and congestion control); the old code could get away with having tasks .await on things, but the new reactor can't really do this (as it'd lock the reactor up), so has to do everything in a nonblocking manner.
* Upgrade to async-native-tls 0.4.0Nick Mathewson2021-11-121-3/+3
|
* Remove usage of tracing-test 0.1Nick Mathewson2021-11-111-81/+4
| | | | | | | | It requires tracing-subscriber 0.2, which is a lower version than we want, and which causes trouble with our minimal-versions CI test. There is a pending issue to fix this; we can reinstate tracing-test once it is merged: https://github.com/dbrgn/tracing-test/pull/11
* Tests for tor-dirmgr::bootstrapNick Mathewson2021-11-111-4/+82
|
* Replace all println/eprintln calls outside of arti CLI with trace.Nick Mathewson2021-11-041-0/+1
|
* Get rid of tor-proto's ChannelImpl, and use the reactor more insteadeta2021-11-031-1/+0
| | | | | | | | | | | | | | | | | | | 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.
* Use coarsetime to build an incoming traffic timestamp.Nick Mathewson2021-11-021-0/+14
| | | | | | | | | | | | | | | | We need this for the circuit timeout estimator (#57). It needs to know "how recently have we got some incoming traffic", so that it can tell whether a circuit has truly timed out, or whether the entire network is down. I'm implementing this with coarsetime, since we need to update these in response to every single incoming cell, and we need the timestamp operation to be _fast_. (This reinstates an earlier commit, f30b2280, which I reverted because we didn't need it at the time.) Closes #179.
* Cargo.lock: v0.0.1 is now published.arti-v0.0.1Nick Mathewson2021-10-291-26/+26
|
* Update Cargo.lock in preparation for Arti 0.0.1 release.Nick Mathewson2021-10-291-71/+71
|
* Upgrade to fslock version 0.2Nick Mathewson2021-10-271-3/+2
| | | | | This version makes all locks per-handle rather than per-process, by moving from lockf() to flock() on unix.
* Improve and future-proof the `arti` CLIeta2021-10-271-44/+62
| | | | | | | | | | | | | | | | | | | | | | | | This switches out `arti`'s argument-parsing library with `clap`, which is a lot more featureful (and very widely used within the Rust ecosystem). We also now use a lot of `clap`'s features to improve the CLI experience: - The CLI now expects a subcommand (currently, either "help", or "proxy" for the existing SOCKS proxy behaviour). This should let us add additional non-SOCKS-proxy features to arti in future. - `clap` supports default values determined at runtime, so the way the default config file is loaded was changed: now, we determine the OS-specific path for said file before invoking `clap`, so the help command can show it properly. - The behaviour of `tor_config` was also changed; now, one simply specifies a list of configuration files to load, together with whether they're required. - That function also way overused generics; this has been fixed. - Instead of using the ARTI_LOG environment variable to configure logging, one now uses the `-l, --log-level` CLI option. (The intent is for this option to be more discoverable by users.) - The `proxy` subcommand allows the user to override the SOCKS port used on the CLI without editing the config file.
* Migrate tor-dirmgr from chrono to time 0.3Nick Mathewson2021-10-241-28/+4
| | | | | (This appears to be the emerging consensus of how to handle RUSTSEC-2020-0159.)
* Migrate tor-netdoc from chrono to time 0.3Nick Mathewson2021-10-241-1/+1
| | | | | (This appears to be the emerging consensus of how to handle RUSTSEC-2020-0159.)
* Upgrade to latest tracing-{subscriber,journald}Nick Mathewson2021-10-231-20/+6
|
* Upgrade to new version of simple_asn1.Nick Mathewson2021-10-221-4/+31
|
* Rename tor_client/arti_tor_client to arti_client.Nick Mathewson2021-10-211-2/+2
| | | | | | Solves a name conflict with the existing tor_client create. Closes #130.
* tor-client/examples: add `hyper` exampleeta2021-10-191-2/+88
| | | | | | | The new `hyper` tor-client example demonstrates integrating arti with the popular Rust `hyper` HTTP library by implementing a custom Hyper "connector" (a type that can initiate connections to HTTP servers) that proxies said connections via the Tor network.
* tor-proto: implement tokio Async{Read, Write} traits conditionallyeta2021-10-191-0/+2
| | | | | | | | | futures::io::AsyncRead (and Write) isn't the same thing as tokio::io::AsyncRead, which is a somewhat annoying misfeature of the Rust async ecosystem (!). To mitigate this somewhat for people trying to use the `DataStream` struct with tokio, implement the tokio versions of the above traits using `tokio-util`'s compat layer, if a crate feature (`tokio`) is enabled.
* tor-client: refactor TorClient::bootstrap's args into a config objecteta2021-10-191-0/+1
| | | | | | | | | | | | | The three arguments TorClient::bootstrap requires by way of configuration have been factored into a new TorClientConfig object. This object gains two associated functions: one which uses `tor_config`'s `CfgPath` machinery to generate sane defaults for the state and cache directories, and one that accepts said directories in order to create a config object with those inserted. (this commit was inspired by trying to use arti as a library and being somewhat overwhelmed by the amount of config stuff there was to do :p)
* Upgrade to latest chrono; update cargo_audit.shNick Mathewson2021-10-191-14/+2
| | | | | | | | | | | | Thanks to the chrono update, we no longer include an obsolete/vulnerable version of the `time` crate. Unfortunately, it turns out that chrono has the same trouble as `time`: it, too, looks at the environment via localtime_r, and the environment isn't threadsafe. One step forward, one step back. At least the underlying issue is one that lots of people seem to care about; let's hope they come up with a solution.
* Merge branch 'reject_bad_hostnames'Nick Mathewson2021-10-181-0/+2
|\
| * Introduce ClientConfig for is_localhost config parameterNeel Chauhan2021-10-061-0/+2
| |