summaryrefslogtreecommitdiff
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-1030-190/+202
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Minimize the required version for each dependency. Closes #275 See merge request tpo/core/arti!228
| * | | Move our "minimal versions" code to a script.Nick Mathewson2022-01-072-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously this code was in .gitlab-ci.yml, but for the purposes of testing my fix for #275, it turned out to be much better to have it in a script of its own. Also, we now need to update our "quote" second-order dependency, since otherwise our minimal first-order dependencies won't build correctly.
| * | | 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.
* | | | Merge branch 'with_prefs' into 'main'Ian Jackson2022-01-106-16/+39
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | Use *_with_prefs() for Option<ConnectPrefs> callers in TorClient::connect Closes #273 See merge request tpo/core/arti!229
| * | | 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]>
* | | | Merge branch 'dearcify_clientcirc_buildable' into 'main'Ian Jackson2022-01-072-14/+7
|\ \ \ \ | |/ / / |/| / / | |/ / | | | De-Arc-ify Buildable for ClientCirc See merge request tpo/core/arti!219
| * / De-Arc-ify Buildable for ClientCircNeel Chauhan2022-01-062-14/+7
|/ /
* | Merge branch 'remove_unused_rngs' into 'main'eta2022-01-062-51/+23
|\ \ | | | | | | | | | | | | Remove a bunch of unused RNGs See merge request tpo/core/arti!213
| * \ Merge branch 'main' into 'remove_unused_rngs'eta2022-01-0634-23/+55
| |\ \ | |/ / |/| | | | | # 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-0630-13/+42
|\ \ \
| * | | extend lints to include 'clippy::all'Daniel Eades2021-12-2830-13/+42
| |/ /
* | | 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
|/
* Merge branch 'exclude-arti-bench-coverage' into 'main'eta2021-12-211-1/+1
|\ | | | | | | | | Exclude arti-bench from coverage. See merge request tpo/core/arti!210
| * Exclude arti-bench from coverage.Nick Mathewson2021-12-211-1/+1
| | | | | | | | | | This program is itself for testing; we don't strongly care how much coverage it has on its own.
* | Merge branch 'ticket_256' into 'main'eta2021-12-211-5/+7
|\ \ | | | | | | | | | | | | | | | | | | Only count timeouts when we've seen net activity recently. Closes #256 See merge request tpo/core/arti!207
| * | 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 'arti-bench-usability' into 'main'eta2021-12-213-10/+41
|\ \ | |/ |/| | | | | Usability improvements to arti-bench.sh script See merge request tpo/core/arti!209
| * arti-bench.sh: Handle the case where CHUTNEY_PATH is set.Nick Mathewson2021-12-211-8/+32
| | | | | | | | | | Previously, this case would cause arti-bench to hang forever, trying to bootstrap against one network while another network was running.
| * arti-bench.sh: set $RUST_LOG if it isn't set.Nick Mathewson2021-12-211-0/+5
| | | | | | | | (An empty $RUST_LOG no output, and confuse the nickm^Wuser.)
| * tests/chutney/setup.sh: Fix a shellcheck warning.Nick Mathewson2021-12-212-2/+4
|/ | | | | shellcheck doesn't like `export FOO="$(bar)"` as one line, since it has the possibility of missing errors.
* 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?
* | Update CONTRIBUTING to mention FIXME, not XXX.Nick Mathewson2021-12-201-1/+1
| |
* | 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?).