summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | slotmap-careful: Try to make test work with MSRV.Nick Mathewson2024-08-081-8/+4
| | | | | |
| * | | | | New `slotmap-careful` crate to use when we mustn't re-use keys.Nick Mathewson2024-08-086-0/+1317
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This crate works as a drop-in replacement for the generational arena types `slotmap::{SlotMap, DenseSlotMap, HopSlotMap}`, and is implemented a set of wrappers around those types. The wrappers guarantee that slot versions numbers can never wrap around by marking as unusable any slot whose version number would otherwise get too high. (We add some leeway between our max allowed version number and the largest possible version number, so that we can detect bugs.) The code relies on the serde encoding of slotmap key versions. For notes on stability and (surprisingly good) performance, see the comments. Test coverage is around 98% for the lib.rs file; it's lower in key_data.rs, since the error cases are unreachable given slotmap's current behavior. Open questions: * What further testing is a good idea? * Will slotmap ever upstream something like this? See "# Limitations" comment for the parts of slotmap that are not implemented; I hope that we don't need them.
* | | | | | Merge branch 'mistrust-refactor' into 'main'gabi-2502024-08-141-6/+63
|\ \ \ \ \ \ | |_|_|_|/ / |/| | | | | | | | | | | | | | | | | fs-mistrust: Avoid opening the file in CheckedDir::metadata(). See merge request tpo/core/arti!2324
| * | | | | fs-mistrust: Make CheckedDir::metadata() return an error if path is symlink.Gabriela Moldovan2024-08-121-2/+45
| | | | | |
| * | | | | fs-mistrust: Avoid opening the file in CheckedDir::metadata().Gabriela Moldovan2024-08-081-5/+19
| | | | | | | | | | | | | | | | | | | | | | | | Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2291#note_3057232
* | | | | | Merge branch 'rpc-connection-error' into 'main'Nick Mathewson2024-08-131-16/+66
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rpcserver: use more sophisticated handling for ConnectionError. Closes #1517 See merge request tpo/core/arti!2335
| * | | | | | rpcserver: use more sophisticated handling for ConnectionError.Nick Mathewson2024-08-121-16/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In general, we don't want to return a ConnectionError for a simple EOF condition; we only want to report an error when there's an actual failure. Also, it's a good idea to capture the actual error return conditions that we get from aynchronous_codecs, rather than throwing them away as we did before. Closes #1517.
* | | | | | | Merge branch 'streampollset-no-v' into 'main'David Goulet2024-08-132-24/+21
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | StreamPollSet: remove redundant type parameter V See merge request tpo/core/arti!2334
| * | | | | | | StreamPollSet: remove redundant type parameter VJim Newsome2024-08-122-24/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was required to be the same type as `S::Item`. We can just use `S::Item` directly.
* | | | | | | | Merge branch 'ffi_dylib' into 'main'Alexander Færøy2024-08-131-0/+3
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ffi: Build arti-rpc-client-core as a C dynamic library. See merge request tpo/core/arti!2331
| * | | | | | | | ffi: Build client-core as a dynamic library.Nick Mathewson2024-08-061-0/+3
| | |_|_|_|/ / / | |/| | | | | |
* | | | | | | | Merge branch 'cache-grcov' into 'main'Alexander Færøy2024-08-131-2/+1
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CI: Use "via-cargo-install-in-ci" to cache grcov in 'coverage-aggregated' See merge request tpo/core/arti!2325
| * | | | | | | | CI: Use "via-cargo-install-in-ci" to cache grcov in 'coverage-aggregated'Nick Mathewson2024-08-081-2/+1
| | |_|_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (This is what we do in all the other CI tests when we want to cargo-install something.)
* | | | | | | | Merge branch 'uninhabited-warning' into 'main'gabi-2502024-08-134-28/+20
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resolve unreachable_patterns warnings from nightly. See merge request tpo/core/arti!2338
| * | | | | | | | Resolve unreachable_patterns warnings from nightly.Nick Mathewson2024-08-134-28/+20
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nightly rust doesn't like it when you have a `match` arm that can never be reached because of an uninhabited type. As such, we can't say stuff like: ``` let x: Option<Void> = ...; match x { Some(_) => unreachable!(), None => ... } ```
* | | | | | | | Merge branch 'nightly-doc-failure' into 'main'Nick Mathewson2024-08-131-0/+1
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a missing incantation to fix doc(cfg=...). See merge request tpo/core/arti!2337
| * | | | | | | | Add a missing incantation to fix doc(cfg=...).Nick Mathewson2024-08-131-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Without this, we get a warning when we run `cargo doc`.
* | | | | | | | | Merge branch 'restricted-mode-cleanup' into 'main'Nick Mathewson2024-08-133-31/+21
|\ \ \ \ \ \ \ \ \ | |/ / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | tor-hsservice: Move authorized_clients out of RunningOnionService. See merge request tpo/core/arti!2336
| * | | | | | | | tor-hsservice: Log whether the service is running in restricted discovery mode.Gabriela Moldovan2024-08-131-0/+12
| | | | | | | | |
| * | | | | | | | tor-hsservice: Move authorized_clients out of RunningOnionService.Gabriela Moldovan2024-08-133-31/+9
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We now create the authorized_clients in the publisher (we don't need the authorized_clients anywhere else, so it makes little sense to keep them in `RunningOnionService`).
* | | | | | | | Merge branch 'rpc-describe' into 'main'Nick Mathewson2024-08-1310-12/+218
|\ \ \ \ \ \ \ \ | |_|_|_|/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | RPC: Method to expose a list of RPC methods. See merge request tpo/core/arti!2332
| * | | | | | | Unstable RPC method to dump method information.Nick Mathewson2024-08-123-1/+44
| | | | | | | |
| * | | | | | | tor-error: implement HasKind on void::Void and Infallible.Nick Mathewson2024-08-122-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `void::Void` represents the type of an object that can't be constructed. It's especially useful as the error type of an infallible function. `void::Void` already implements `std::error::Error`, so all we need to do to use it as a "can't happen" error type in our code is to have it also implement `HasKind`. Also implement HasKind for Infallible while we're at it.
| * | | | | | | rpcbase: Feature to list the RPC methods and what they apply to.Nick Mathewson2024-08-124-1/+108
| | | | | | | |
| * | | | | | | rpcbase: Facility for looking up RPC method informationNick Mathewson2024-08-122-5/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We'll need this to refer to the names of RPC methods as visible to the caller, and to cross-reference them with their related types.
| * | | | | | | rpcbase: Expose Invocable type names directly.Nick Mathewson2024-08-121-6/+11
| | |_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, we exposed them only via `describe_invocable`, which would have required the caller to parse a string in order to find these.
* | | | | | | Merge branch 'rm-counted-hash-map' into 'main'Nick Mathewson2024-08-132-542/+0
|\ \ \ \ \ \ \ | |_|_|_|/ / / |/| | | | | | | | | | | | | | | | | | | | tor-proto: remove CountedHashMap See merge request tpo/core/arti!2333
| * | | | | | tor-proto: removed CountedHashMapJim Newsome2024-08-122-542/+0
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was written for use in StreamMap, with an eye towards potentially reusing it elsewhere. We no longer use it in StreamMap, so it's currently unused. Probably best to go ahead and remove it now and resurrect it if we decide we want it later than to maintain dead code (or to make it more widely available without more concrete use-cases).
* | | | | | Merge branch 'stream-poll-set-accessible' into 'main'Jim Newsome2024-08-123-186/+496
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | StreamMap: Merge mpsc receivers back into open stream entries See merge request tpo/core/arti!2326
| * | | | | | StreamPollSet: replace nested OptionJim Newsome2024-08-081-10/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bullied by clippy. I'm on the fence whether this is actually an improvement, or whether I should add an exception. ``` error: consider using `Option<T>` instead of `Option<Option<T>>` or a custom enum if you need to distinguish all 3 cases --> crates/tor-proto/src/util/stream_poll_set.rs:106:56 | 106 | pub fn remove(&mut self, key: &K) -> Option<(K, P, Option<Option<V>>, S)> { | ^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_option = note: `-D clippy::option-option` implied by `-D warnings` = help: to override `-D warnings` add `#[allow(clippy::option_option)]` ```
| * | | | | | StreamMap: Merge rxs into open_streamsJim Newsome2024-08-082-72/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This simplifies the bookkeeping a bit, and clears a path towards updating the Streams in our StreamPollSet to directly respect flow control.
| * | | | | | StreamMap: Put open streams in their own map instead of CountedHashMapJim Newsome2024-08-082-137/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This temporarily results in *more* bookkeeping, but is a step towards putting the mpsc receivers back into `OpenStreamEnt`, and putting the whole `OpenStreamEnt`s into the `StreamPollSet`.
| * | | | | | StreamMap: test n_open_streamsJim Newsome2024-08-081-1/+13
| | | | | | |
| * | | | | | StreamPollSet: allow access to inner streamsJim Newsome2024-08-082-48/+345
| | | | | | |
* | | | | | | Merge branch '1144-std-backtrace' into 'main'David Goulet2024-08-127-50/+17
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use std::backtrace instead of backtrace crate Closes #1144 See merge request tpo/core/arti!2301
| * | | | | | | Match previous backtrace formattingRobin Leander Schröder2024-08-082-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | std::backtrace::Backtrace's Display looks the same as backtrace_rs::Backtrace's Debug
| * | | | | | | Use std::backtrace instead of backtrace crateRobin Leander Schröder2024-08-017-47/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removes resolve_backtraces from rtmock since it is no longer needed as stdlib's backtraces automatically lazily resolve without needing a &mut.
* | | | | | | | Merge branch 'ffi_for_rpc_handle' into 'main'Nick Mathewson2024-08-127-28/+387
|\ \ \ \ \ \ \ \ | |_|_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | ffi: Add support for request handles See merge request tpo/core/arti!2317
| * | | | | | | ffi: Add support for request handlesNick Mathewson2024-08-126-9/+285
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This API allows the caller to launch a request and then watch for updates on it.
| * | | | | | | ffi: New in_mut_ptr_opt type for receiving *mut T.Nick Mathewson2024-08-121-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, we had in_ptr_opt for functions that want to take a nullable `*const T` without consuming it. This is the equivalent for taking a nullable `*mut T` without consuming it.
| * | | | | | | ffi: New out_val_opt type for outptrs to non-pointersNick Mathewson2024-08-123-22/+80
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, we had out_ptr_opt for functions that wanted to return a newly allocated `ArtiRpcFoo` via a `struct ArtiRpcFoo **` argument. But we didn't have a way to return non-allocated `int` via an `int *` argument. This code provides that.
* | | | | | | Merge branch 'run-cbindgen' into 'main'Nick Mathewson2024-08-121-3/+3
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Re-run cbindgen; new version has changed whitespace. See merge request tpo/core/arti!2330
| * | | | | | | Re-run cbindgen; new version has changed whitespace.Nick Mathewson2024-08-121-3/+3
|/ / / / / / /
* | | | | | | Merge branch 'restricted-mode-live-reload' into 'main'Nick Mathewson2024-08-121-0/+243
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | dov/dev/notes: Add note about live reloads in restricted discovery mode. See merge request tpo/core/arti!2329
| * | | | | | dov/dev/notes: Add note about live reloads in restricted discovery mode.Gabriela Moldovan2024-08-121-0/+243
| | |_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This describes a couple of options for extending the config reloading logic to support watching for changes in the `restricted_disovery.key_dirs` directories. Note: the options we have here are, in a sense, two extremes * one is about refactoring some of the existing code into a reusable component, and leaving most of the configuration logic unchanged * the other involves rethinking the entire config watching/reloading mechanism to support watching for changes in arbitrary directories I am leaning towards the simpler option, because I'm not sure the other one is worth the added complexity (we currently only have a single use case for it).
* | | | | | Merge branch 'alt-keyed-futures-unordered' into 'main'Jim Newsome2024-08-082-116/+283
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | | | | | | | | | | | | | | KeyedFuturesUnordered: refactor so that futures are accessible See merge request tpo/core/arti!2321
| * | | | | KeyedFuturesUnordered: explicitly document Stream behaviorJim Newsome2024-08-081-0/+13
| | | | | |
| * | | | | KeyedFuturesUnordered: return actual referencesJim Newsome2024-08-081-23/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can actually return references here instead of `impl Deref`, simplifying this code a bit and follow-on code to use this in StreamPollSet.
| * | | | | KeyedFuturesUnordered: additional testingJim Newsome2024-08-081-37/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Primarily I wanted to exercise the code path that we get a spurious wakeup due to a future that was removed from the map later becoming ready. I also ended up merging ReadyFut and PendingFut into a more flexible ValueFut to make this a little nicer.
| * | | | | Add KeyedFuturesUnordered::get and KeyedFuturesUnordered::get_mutJim Newsome2024-08-081-3/+72
| | | | | |