summaryrefslogtreecommitdiff
path: root/Cargo.lock
Commit message (Collapse)AuthorAgeFilesLines
* 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
| |
* | Commit change to cargo.lock.Nick Mathewson2021-10-181-1/+0
| |
* | Update Cargo.lock.Jani Monoses2021-10-181-1/+1
| |
* | Update const-oid: the previous version has been yanked.Nick Mathewson2021-10-151-2/+2
| |
* | arti: On startup, increase the NOFILE resource limit.Nick Mathewson2021-10-141-0/+10
| | | | | | | | | | | | | | | | | | | | | | The default soft limit is typically enough for process usage on most Unixes, but OSX has a pretty low default (256), which you can run into easily under heavy usage. With this patch, we're going to aim for as much as 16384, if we're allowed. Fixes part of #188.
* | proxy: Mark ENFILES and EMFILES as survivable.Nick Mathewson2021-10-141-0/+2
| | | | | | | | | | | | | | | | I don't love this approach, but those errors aren't distinguished by ErrorKind, so we have to use libc or winapi, apparently. At least nothing here is unsafe. Addresses part of #188.
* | Pass the guard manager down to the path selection functions.Nick Mathewson2021-10-111-0/+1
| |
* | Add a GuardMgr member to CircuitBuilderNick Mathewson2021-10-101-0/+1
| |
* | Re-export configuration types from tor-client.Nick Mathewson2021-10-091-2/+0
| |
* | Tests for top-level GuardMgr.Nick Mathewson2021-10-071-0/+1
| | | | | | | | | | | | | | Also, refactor our message handling to be more like the tor_proto reactors. The previous code had a bug where, once the stream of events was exhausted, we wouldn't actually get any more notifications.
* | Implement persistent state for guard mgrNick Mathewson2021-10-071-0/+1
| |
* | Initial backend implementation for guard node manager.Nick Mathewson2021-10-071-0/+27
| | | | | | | | | | | | | | There are some missing parts here (like persistence and tests) and some incorrect parts (I am 90% sure that the "exploratory circuit" flag is bogus). Also it is not integrated with the circuit manager code.
* | Change tor-persist to use json instead of toml.Nick Mathewson2021-10-071-1/+1
| | | | | | | | | | | | The limitations with toml seemed to be reaching a head, and I wasn't able to refactor the guardmgr code enough to actually have its state be serializable as toml. Json's limitations are much narrower.
* | update ctrlc and derTrinity Pointard2021-10-061-6/+6
|/ | | | ctrlc had rustsec issues, der was yanked
* Update cargo.lock again.Nick Mathewson2021-10-051-4/+4
|