summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | tor-memquota: mq_queue: Call mpsc::Receiver::close in our rx DropIan Jackson2024-08-151-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | Fixes the livelock possibility discussed here https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292#note_3059519
| * | | | tor-memquota: StreamUnobtrusivePeeker: provide as_raw_inner_pin_mutIan Jackson2024-08-151-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will let us call mpsc::Receiver::close. We have it take Pin, even though we don't really want that for our use case, because if you use StreamUnobtrusivePeeker with a non-Unpin stream you'll ant that.
| * | | | tor-memquota: mq_queue: Add fill_and_empty testIan Jackson2024-08-151-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292#note_3059518
| * | | | tor-memquota: Add blank lines before fns except in testsIan Jackson2024-08-151-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | Requested by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292#note_3059517
| * | | | tor-memquota: Fix typosIan Jackson2024-08-152-5/+5
| | | | |
| * | | | tor-memquota: Add mq_queue, memory-quota-tracking (MPSC) queue (tests)Ian Jackson2024-08-151-0/+179
| | | | |
| * | | | tor-memquota: Add mq_queue, memory-quota-tracking (MPSC) queueIan Jackson2024-08-155-5/+507
| | | | |
| * | | | tor-memquota: Add a Sealed traitIan Jackson2024-08-152-0/+7
| | | | | | | | | | | | | | | | | | | | We'll use this in a moment.
| * | | | tor-memquota: Provide Participation::new_dangling and WeakAccount::new_danglingIan Jackson2024-08-151-0/+26
|/ / / / | | | | | | | | | | | | | | | | We're going to want the one for Participation - it saves us an annoying Option. Let's provide the one for WeakAccount too.
* | | | Merge branch 'macos-allow-fail' into 'main'Alexander Færøy2024-08-151-0/+2
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | CI: allow the MacOS build test to fail See merge request tpo/core/arti!2346
| * | | | CI: allow the MacOS build test to failIan Jackson2024-08-151-0/+2
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | My efforts to fix it by flailing with CC versions have not been successful. We need CI passing so we can continue to do other work.
* | | | Merge branch 'mandatory-guardmgr' into 'main'gabi-2502024-08-157-510/+369
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | tor-circmg: Make `GuardMgr` mandatory See merge request tpo/core/arti!2339
| * | | | tor-circmgr: fix flaky `path::exitpath::test::by_ports` testSteven Engler2024-08-132-7/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `path::exitpath::test::by_ports` test sometimes failed now that the test is using a `GuardMgr` since `select_guard`, when given a chosen exit, only ensures that the guard and chosen exit are not in the same family. It does not ensure that the guard and exit do not share an extended family. This commit relaxes an assertion in the test. ```text thread 'path::exitpath::test::by_ports' panicked at crates/tor-circmgr/src/path/exitpath.rs:295:9: assertion failed: r1.can_share_circuit(r3, subnet_config) ``` This "chosen exit" functionality isn't actually being used anywhere (`ExitPathBuilderInner::ChosenExit` is only ever constructed in tests).
| * | | | tor-circmgr: assert in test that exit path begins with guardSteven Engler2024-08-121-2/+4
| | | | |
| * | | | tor-circmgr: make `GuardMgr` mandatorySteven Engler2024-08-127-316/+146
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Functions that took `Option<&GuardMgr>` now take only `&GuardMgr`. Three unit tests were removed that covered behaviour when no guard manager was set.
| * | | | tor-circmg: prepare tests for runtime requirementSteven Engler2024-08-122-218/+229
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This wraps some unit tests with `tor_rtcompat::test_with_all_runtimes!`. This is its own commit to get the indentation changes out of the way and declutter the following commit.
* | | | | Merge branch 'rpc-use-slotmap' into 'main'gabi-2502024-08-156-54/+46
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rpcserver: Use slotmap-careful instead of generational-arena. Closes #1282 See merge request tpo/core/arti!2343
| * | | | | maint: Remove exceptions for generational-arenaNick Mathewson2024-08-142-9/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that it's gone, we no longer need to bless its MPL-2.0 usage or excuse it from cargo-audit.
| * | | | | rpcserver: Use slotmap-careful instead of generational-arena.Nick Mathewson2024-08-144-45/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unlike generational-arena, slotmap is maintained. Unlike slotmap, slotmap-careful should never be able to reuse the same key for two different objects. Closes #1282.
* | | | | | Merge branch 'cbindgen-cleanup' into 'main'gabi-2502024-08-154-11/+12
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | ffi: clean up a couple of identifiers See merge request tpo/core/arti!2344
| * | | | | | ffi: Rename arti_rpc_status_to_str.Nick Mathewson2024-08-142-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (This function manipulates an ArtiRpcStatus; and we try to have all of the ffi functions in this library begin with "arti_rpc_".)
| * | | | | | cbindgen: Correctly hide "Utf8CString".Nick Mathewson2024-08-143-9/+10
| |/ / / / /
* | | | | | Merge branch 'torclient-doc' into 'main'gabi-2502024-08-151-0/+111
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | | | | | | | doc/dev/notes: keymgr-porcelain: Add note about moving keymgr functions out of TorClient. See merge request tpo/core/arti!2314
| * | | | | doc/dev/notes: keymgr-porcelain: Add note about alternative API.Gabriela Moldovan2024-08-141-0/+12
| | | | | |
| * | | | | doc/dev/notes: keymgr-porcelain: Add note about moving keymgr functions out ↵Gabriela Moldovan2024-08-061-0/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of TorClient. This would a possible long-term fix for #1496.
* | | | | | Merge branch 'careful-slotmap' into 'main'Nick Mathewson2024-08-146-0/+1313
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | | | | | | | | | | | | | | New `slotmap-careful` crate to use when we mustn't re-use keys. See merge request tpo/core/arti!2298
| * | | | | 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
| | | | | | | |