summaryrefslogtreecommitdiff
path: root/Cargo.lock
Commit message (Collapse)AuthorAgeFilesLines
...
* spawn errors: impl HasKind for futures::SpawnErrorIan Jackson2022-02-041-0/+3
| | | | | | | | | This needs two kinds. We have decided to treat a non-shutdown SpawnError as "unexplained" rather than as an InternalError. There are many crates whose From<futures::task::SpawnError> for Error erroneously treat it as an internal error. We will fix them in a moment.
* tor-error: Add as a ddpendency to many cratesIan Jackson2022-02-041-0/+5
| | | | Doing this here makes it easier when I rebase/reorder things
* tor-error: Introduce InternalError as a type and a kindIan Jackson2022-02-041-0/+46
| | | | This can contain a backtrace, which will be printed.
* tor-error: Skeleton for new crateIan Jackson2022-02-041-0/+7
| | | | | | As per doc/Errors.md. Currently there are no error kinds. Some will be added as we go along.
* Reload configuration when our configuration files change.Nick Mathewson2022-02-011-47/+269
| | | | Closes #270
* Bump tor-netdir and tor-guardmgr versionsarti-v0.0.4Nick Mathewson2022-01-311-2/+2
| | | | | | | | tor-netdir needs to bump because tor-netdoc bumped, even though there were no other changes in tor-netdir. Whoops. tor-guardmgr needs to bump because it already published, with the older tor-netdir.
* Bump the patch version of every crate that changed since 0.0.3Nick Mathewson2022-01-311-14/+14
|
* Run "cargo update" in preparation for monday's release.Nick Mathewson2022-01-281-88/+103
|
* arti: be more careful to use the user-selected runtimeNick Mathewson2022-01-261-0/+1
|
* Refactor native_tls usage into its own moduleNick Mathewson2022-01-251-11/+0
| | | | | This change uses the async-native-tls crate for everything, and deletes some duplicated code.
* tor-rtcompat: Add support for rustls.Nick Mathewson2022-01-251-0/+78
| | | | | | | | | | | | | | | | | | | This is based on @janimo's approach in !74, but diverges in a few important ways. 1. It assumes that something like !251 will merge, so that we can have separate implementations for native_tls and rustls compiled at the same time. 2. It assumes that we can implement this for the futures::io traits only with no real penalty. 3. It uses the `x509-signature` crate to work around the pickiness of the `webpki` crate. If webpki eventually solves their [bug 219](https://github.com/briansmith/webpki/issues/219), we can remove a lot of that workaround. Closes #86.
* Refactor Runtimes to use separate TLS implementations internally.Nick Mathewson2022-01-191-1/+0
| | | | | This will make it easier to implement them using some other TLS provider as well, without having to duplicate all of our code.
* Merge branch 'bootstrap_reporting'Nick Mathewson2022-01-191-0/+10
|\
| * tor-chanmgr: Add bootstrap/status reporting.Nick Mathewson2022-01-181-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * tor-dirmgr: Create a bootstrap-status exporting mechanism.Nick Mathewson2022-01-181-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The interface is similar to the one exposed by `arti-client`: it internally uses postage::watch to give a series of events showing when a bootstrap status is changing. Thanks to the existing state/driver separation in the DirMgr design we don't need much new logic: each download state needs to expose (internally) how far along it is in its download, which the bootstrap code passes to the DirMgr if it has changed. I believe that in the long run, we'll probably want to expose more (or different) information here, and we'll want to process it differently. With that in mind, I've made the API for `DirBootstrapStatus` deliberately narrow, so that we can change its of its internal later on without breaking code that depends on it. (The information exposed by this commit is not yet summarized in `arti-client`.) Part of #96.
* | Merge branch 'eta/292-1' into 'main'eta2022-01-141-0/+8
|\ \ | |/ |/| | | | | arti-bench: add support for multiple samples & averaging See merge request tpo/core/arti!240
| * arti-bench: add support for multiple samples & averagingeta2022-01-141-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We now do multiple samples (configurable; default 3) per type of `arti-bench` benchmark run, and take a mean and median average of all data collected, in order to hopefully be a bit more resilient to random outliers / variation. This uses some `futures::stream::Stream` hacks, which might result in more connections being made than required (and might impact the TTFB metrics somewhat, at least for downloading). Results now get collected into a `BenchmarkResults` struct per type of benchmark, which will be in turn placed into a `BenchmarkSummary` in a later commit; this will also add the ability to serialize the latter struct out to disk, for future reference. part of arti#292
* | Implement the basics of a bootstrap-status API.Nick Mathewson2022-01-131-0/+2
|/ | | | | | | | | | | | The purpose of a this API is to tell the user how far along Arti is in getting bootstrapped, and if it's stuck, what it's stuck on. This API doesn't yet expose any useful information: by the time it's observable to a client, it's always "100% bootstrapped." But I'm putting it in a MR now so that we can review the basic idea, and to avoid conflicts with later work on tickets like #293 and #278. This is part of #96.
* guardmgr::..::sample_test: Fix intermittent failure.Nick Mathewson2022-01-111-0/+1
| | | | | | | | | | | | | | This test should only fail very rarely (around 1/2.4e8) when guards are chosen from a list of 20 with uniform probability. But that wasn't what we were doing on the mock test network: we were choosing from a list of 10 viable guards, with nonuniform probability. As a fix, we change the test network probabilities so that the guards _are_ chosen with a uniform probability for this test, and we use a modified version of the test network where there are indeed 20 Guard-flagged relays with the required DirCache=2 protocol. Closes #276.
* Bump all crate versions to 0.0.3.Nick Mathewson2022-01-111-29/+29
|
* Run "cargo update".Nick Mathewson2022-01-111-147/+153
|
* Tracing configuration for logfiles, per-target filtersNick Mathewson2022-01-101-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we could only configure one global tracing filter that applied to stdout and journald. There was no support for log files, either. This patch fixes both issues, by substantially revising the configuration format: There are now separate filters for each log file, for journald, and for the console log. Because we want to allow multiple logfiles, they have to go into an array in the configuration. The configuration logic has grown a bit complicated in its types, since the tracing_subscriber crate would prefer to have the complete structure of tracing Layers known statically. That's fine when you know how many you have, and which kinds there will be, but for the runtime-configuration case we need to mess around with `Box<dyn Layer ...>`. I also had to switch from tracing_subscriber's EnvFilter to its Targets filter. It seems "EnvFilter" can only be applied as a Layer in itself, and won't work as a Filter on an individual Layer. Closes #166. Closes #170.
* 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