summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
| * Add API to check if primary MDs are missing.Nick Mathewson2022-01-064-2/+46
| | | | | | | | | | | | | | We need this information to know if it's okay to migrate to a new NetDir, or if we need to download more information first. Part of #178.
| * guardmgr: Don't use no-md guards for data circs.Nick Mathewson2022-01-061-5/+31
| | | | | | | | | | | | | | If we don't know a current microdescriptor for a guard, we can't use it for multihop circuits, since we don't know its onion keys. This is part of a fix for #178.
* | Merge branch 'bug274' into 'main'eta2022-01-101-1/+14
|\ \ | | | | | | | | | | | | | | | | | | Fix busy-loop when consensus is near expiring. Closes #274 See merge request tpo/core/arti!223
| * | Fix busy-loop when consensus is near expiring.Nick Mathewson2022-01-071-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When our current consensus is getting close to being invalid (but it isn't invalid yet), we try to get a new one. So far, so good. But we had a bug: when we went to get a new consensus, we'd see that we had a perfectly fine not-yet-invalid consensus in our cache, reload it, find that it was ready, and continue! This patch fixes our behavior: If we have a usable consensus, then when we reset the bootstrapping process, we ignore any cached consensus. Fixes bug #274.
* | | Merge branch 'minimize_deps' into 'main'eta2022-01-1028-188/+188
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Minimize the required version for each dependency. Closes #275 See merge request tpo/core/arti!228
| * | | Minimize the required version for each dependency.Nick Mathewson2022-01-0728-188/+188
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | Use *_with_prefs() for Option<ConnectPrefs> callers in TorClient::connectNeel Chauhan2022-01-086-16/+39
|/ / /
* | | Merge branch 'circ_self_by_ref'Nick Mathewson2022-01-075-48/+66
|\ \ \
| * | | ClientCirc: change some methods to take &selfNick Mathewson2022-01-071-11/+6
| | | | | | | | | | | | | | | | | | | | Previously they took Arc<Self>, and then Self, but &self is perfectly fine here.
| * | | circmgr: Fix a pair of clippy warnings.Nick Mathewson2022-01-071-2/+2
| | | |
| * | | tor-circmgr: Remove Arc around ClientCircIan Jackson2022-01-075-24/+41
| | | | | | | | | | | | | | | | | | | | | | | | See the new commentary text on `ClientCirc` for the rationale. Signed-off-by: Ian Jackson <[email protected]>
| * | | tor-circmgr: tests: Do fake circuit equality by idIan Jackson2022-01-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We are going to get rid of the Arc. Happily there is an id which is always constructed uniquely and preserved by clone. (auto-deref lets us make the function take &Self instead of &Arc) Signed-off-by: Ian Jackson <[email protected]>
| * | | tor-circmgr: tests: Introduce and use FakeCirc::eq()Ian Jackson2022-01-071-13/+19
| | | | | | | | | | | | | | | | | | | | | | | | This removes a lot of open-coded Arc::ptr_eq() calls Signed-off-by: Ian Jackson <[email protected]>
| * | | tor-circmgr: Replace some Arc::clone with .clone()Ian Jackson2022-01-071-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | This will make the code work when it's not an Arc any more. Signed-off-by: Ian Jackson <[email protected]>
| * | | tor-circmgr: Require that AbstractCirc are CloneIan Jackson2022-01-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We are going to get rid of a lot of Arc, so we need the underlying thing to be Clone. Signed-off-by: Ian Jackson <[email protected]>
* | | | Merge branch 'remove-type-annotation' into 'main'Nick Mathewson2022-01-071-1/+1
|\ \ \ \ | |/ / / |/| | | | | | | | | | | tor-circmgr: Remove a type annotation in a method call See merge request tpo/core/arti!225
| * | | tor-circmgr: Remove a type annotation in a method callIan Jackson2022-01-071-1/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | This is a method, so the resolution is automatic. It's not clear to me why this was written out this way, given that extend_ntor is right above. Signed-off-by: Ian Jackson <[email protected]>
* / / De-Arc-ify Buildable for ClientCircNeel Chauhan2022-01-062-14/+7
|/ /
* | Merge branch 'main' into 'remove_unused_rngs'eta2022-01-0633-12/+45
|\ \ | | | | | | | | | # Conflicts: # crates/tor-circmgr/src/build.rs
| * \ Merge branch 'refactor/unwrap-or-default' into 'main'eta2022-01-061-1/+1
| |\ \ | | |/ | |/| | | | | | | prefer 'unwrap_or_default' to manual constructor See merge request tpo/core/arti!215
| | * prefer 'unwrap_or_default' to manual constructorDaniel Eades2022-01-011-1/+1
| | |
| * | Move a comment to the right place.Nick Mathewson2022-01-061-4/+2
| | |
| * | Merge remote-tracking branch 'origin/mr/214'Nick Mathewson2022-01-0629-2/+32
| |\ \
| | * | extend lints to include 'clippy::all'Daniel Eades2021-12-2829-2/+32
| | |/
| * | Merge remote-tracking branch 'origin/mr/217'Nick Mathewson2022-01-061-2/+3
| |\ \
| | * | arti-bench: Remove a FIXME by saying it's OK for this program to panicIan Jackson2022-01-061-2/+3
| | |/
| * | Merge remote-tracking branch 'origin/mr/212'Nick Mathewson2022-01-063-5/+5
| |\ \
| | * | tor-circmgr: Don't clone parameters in create_chantarget()Neel Chauhan2021-12-253-5/+5
| | |/
| * / tor-proto: In begin_stream_impl(), if number of hops is zero, don't continueNeel Chauhan2021-12-251-1/+5
| |/
* / Remove a bunch of unused RNGsNeel Chauhan2021-12-252-51/+23
|/
* Only count timeouts when we've seen net activity.Nick Mathewson2021-12-201-5/+7
| | | | | | | This closes arti#256. It makes our behavior match Tor's more closely, though it has a simpler implementation than Tor. I think that the extra complexity in Tor's logic is because we used to record timeouts in the histogram as well as in the success/failure log.
* Merge branch 'eta/instant-checked-add' into 'main'Nick Mathewson2021-12-201-2/+12
|\ | | | | | | | | preemptive.rs: Use Instant::checked_add instead of raw subtraction See merge request tpo/core/arti!206
| * preemptive.rs: Use Instant::checked_add instead of raw subtractioneta2021-12-201-2/+12
| | | | | | | | | | | | | | | | | | | | | | The implementations of `Add` / `Sub` (et al.) on `std::time::Instant` can panic if the underlying OS structure can't represent the result (like arti#266). Use Instant::checked_add and print a warning instead, to prevent panicking. Also, we now add instead of subtracting; I suspect it's reasonable that you might not be able to go backward past the first `Instant` created on some platforms, but going *forward* should probably work?
* | Merge branch 'refactor/must-use-self' into 'main'eta2021-12-206-0/+10
|\ \ | | | | | | | | | | | | address clippy's latest lint See merge request tpo/core/arti!205
| * | address clippy's latest lintDaniel Eades2021-12-206-0/+10
| | |
* | | tor-proto: Replace XXXs with references to arti#269Nick Mathewson2021-12-201-9/+7
| | | | | | | | | | | | | | | These will require thought; should we ignore them, act on them, or continue to treat them as internal errors?
* | | Remove XXXs from tor-circmgr::mgrNick Mathewson2021-12-201-4/+0
| | | | | | | | | | | | | | | | | | IIUC, these anticipatd a need to store min_exit_circs_per_port in CircMgr. But the current design, where it goes into preemptive.rs and thence to usage, seems to work fine.
* | | arti-client: Change an XXXX to a TODO.Nick Mathewson2021-12-201-1/+5
| | | | | | | | | | | | | | | | | | We _do_ reject bad hostnames: just not where I once thought we might. We need to decide if the current behavior is what we want (and I think it is, probably?).
* | | Change an UTF-8 XXX to a TODO.Nick Mathewson2021-12-201-1/+2
| | | | | | | | | | | | We're assuming that prop285 is accepted in some form.
* | | tor-netdoc: Change an XXX to a TODO.Nick Mathewson2021-12-201-1/+4
| | | | | | | | | | | | | | | | | | Our behavior in handling not-yet-valid router descriptors doesn't match the C Tor implementation, but it's not a big deal: we don't currently use router descriptors at all.
* | | tor-netdoc: Use a more correct error typeNick Mathewson2021-12-201-1/+1
| | | | | | | | | | | | | | | | | | If we fail to convert a curve25519 key to an ed25519 key for checking the onion-key crosscert, don't call that an internal error: it means that something is wrong with the provided ntor key.
* | | Remove an XXXX about ed25519 signatures.Nick Mathewson2021-12-201-2/+0
|/ / | | | | | | | | As of tor-spec commit 01122c5bd7d2f0f, the spec is no longer ambiguous on this point.
* | Merge branch 'one_metahandler_at_a_time' into 'main'eta2021-12-161-10/+18
|\ \ | | | | | | | | | | | | tor-proto: Allow one meta-cell handler at a time. See merge request tpo/core/arti!204
| * | tor-proto: Allow one meta-cell handler at a time.Nick Mathewson2021-12-161-10/+18
| | | | | | | | | | | | | | | Previously the code would let us try to install a meta-cell handler before the old one was done, leading to possible confusion.
* | | Merge branch 'arti-bench' into 'main'eta2021-12-163-0/+392
|\ \ \ | |/ / |/| / | |/ | | Introduce an experimental benchmarking utility for Arti See merge request tpo/core/arti!195
| * Introduce an experimental benchmarking utility for Artieta2021-12-163-0/+392
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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, ...
* | Merge branch 'fallbackdirs-15-12-2021' into 'main'eta2021-12-161-869/+891
|\ \ | | | | | | | | | | | | fallbackdir: Update list generated on December 15, 2021 See merge request tpo/core/arti!202
| * | fallbackdir: Update list generated on December 15, 2021Tor CI Release2021-12-161-869/+891
| | | | | | | | | | | | Signed-off-by: Tor CI Release <[email protected]>
* | | Merge branch 'ct_sendme_tags' into 'main'eta2021-12-162-13/+48
|\ \ \ | | | | | | | | | | | | | | | | tor-proto: use const-time eq on sendme tags. See merge request tpo/core/arti!201
| * | | tor-proto: use const-time eq on sendme tags.Nick Mathewson2021-12-162-13/+48
| |/ / | | | | | | | | | | | | | | | | | | There's no known attack here, but it's best practice to always compare digests using a constant-time comparison operator. This resolves an XXXX comment.