| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | |
| | |
| | |
| | |
| | |
| | | |
Encapsulate flow-control into a separate object that partially abstracts
away the difference between window-based (legacy) flow control and
xon-based (prop324) flow control.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since we no longer have an outbound queue for each hop, and instead
return an error here if there is insufficient circuit window to send a
message, there's no need to pre-check whether we have sufficient window.
If there's insufficient circuit window, we'll still return an error slightly
later, after failing to take from the circuit window.
|
| | | | |
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
tor-memquota: (MPSC) queue with memory quota tracking
See merge request tpo/core/arti!2292
|
| | | | |
| | | |
| | | |
| | | | |
We use `debug!` (tracing logging) everywhere else. Use it here too.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Each queue has two `Participation`s, not just one.
This didn't matter in the `lifecycle` test, because one of the two
Participations was never touched since it was cloned, and a fresh
clone starts out with a cache of zero.
But we're about to reuse this code in a context where both
Participations end up with a cache.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Discussed here
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292#note_3059928
|
| | | | |
| | | |
| | | |
| | | | |
It's not a unit. It's `MpscUnboundedSpec` that's a unit
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
And MpscUnboundedSpec too.
As discussed in
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292#note_3059516
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292#note_3059543
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292#note_3059520
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Fixes the livelock possibility discussed here
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292#note_3059519
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292#note_3059518
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Requested by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2292#note_3059517
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
We'll use this in a moment.
|
| |/ / /
| | |
| | |
| | |
| | | |
We're going to want the one for Participation - it saves us an
annoying Option. Let's provide the one for WeakAccount too.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
CI: allow the MacOS build test to fail
See merge request tpo/core/arti!2346
|
| | | |/
| |/|
| | |
| | |
| | |
| | |
| | | |
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.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
tor-circmg: Make `GuardMgr` mandatory
See merge request tpo/core/arti!2339
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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).
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Functions that took `Option<&GuardMgr>` now take only `&GuardMgr`.
Three unit tests were removed that covered behaviour when no guard
manager was set.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
rpcserver: Use slotmap-careful instead of generational-arena.
Closes #1282
See merge request tpo/core/arti!2343
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Now that it's gone, we no longer need to bless its MPL-2.0 usage
or excuse it from cargo-audit.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| |\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
ffi: clean up a couple of identifiers
See merge request tpo/core/arti!2344
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
(This function manipulates an ArtiRpcStatus;
and we try to have all of the ffi functions in this library
begin with "arti_rpc_".)
|
| | |/ / / / |
|
| |\ \ \ \ \
| |/ / / /
|/| | | |
| | | | |
| | | | | |
doc/dev/notes: keymgr-porcelain: Add note about moving keymgr functions out of TorClient.
See merge request tpo/core/arti!2314
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
of TorClient.
This would a possible long-term fix for #1496.
|
| |\ \ \ \ \
| |_|_|/ /
|/| | | |
| | | | |
| | | | | |
New `slotmap-careful` crate to use when we mustn't re-use keys.
See merge request tpo/core/arti!2298
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| |\ \ \ \ \
| |_|_|_|/
|/| | | |
| | | | |
| | | | | |
fs-mistrust: Avoid opening the file in CheckedDir::metadata().
See merge request tpo/core/arti!2324
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2291#note_3057232
|
| |\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
rpcserver: use more sophisticated handling for ConnectionError.
Closes #1517
See merge request tpo/core/arti!2335
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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.
|
| |\ \ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
StreamPollSet: remove redundant type parameter V
See merge request tpo/core/arti!2334
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This was required to be the same type as `S::Item`. We can just use
`S::Item` directly.
|
| |\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
ffi: Build arti-rpc-client-core as a C dynamic library.
See merge request tpo/core/arti!2331
|
| | | |_|_|_|/ /
| |/| | | | | |
|