| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |/
|
|
|
|
|
|
|
| |
Plumb through a top-level account. This doesn't have any
channel-specific, circuit-specific or stream-specific accounts yet.
tor-circmgr's and tor-hsclient's *tests* need fake account.
In arti-relay, use a dummy account for now.
|
| |\
| |
| |
| |
| | |
Use {u64,usize}::div_ceil
See merge request tpo/core/arti!2473
|
| | |
| |
| |
| |
| | |
Previously we had to avoid it, but now that our MSRV is above 1.73
we can use it with abandon.
|
| |/ |
|
| |
|
|
|
|
| |
The `derive_more` crate broke backward compatibility with this version,
so this change involved quite a few manual fixups.
With luck, they'll keep compatibility for some while in the future.
|
| |
|
|
|
|
|
|
|
|
| |
This will allow for testing, as the CircuitBuilder can be replaced with
a mocked version.
This did require moving some of what was in the CircuitBuilder impl into
the AbstractCircuitBuilder type, since Drop implementations can't be
specialized, but that's fine, as we'll probably be doing more of that in
the future anyways.
|
| |
|
|
|
|
|
| |
This tests that when requesting preemptive circuits, they are not given
out when a insufficient number of circuits are in the CircList, but that
they are given out once the required number of circuits has been
reached.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AbstractSpec and FakeSpec actually make testing more difficult, since
they prevent using FakeBuilder in code that relies on the concrete
TargetCircUsage and SupportedCircUsage types. Removing them means
FakeBuilder can be used in more places, and also means that the test
code is closer to the real code, since TargetCircUsage and
SupportedCircUsage are now exercised directly in more tests.
This did require making one change to a test, which I think was
previously testing behaviour that was true for FakeSpec but not for the
real code:
The mgr::test::isolated test previously asserted that, in the case where
three circuits were requested, two with isolation and one without, the
non-isolated circuit would be shared with one of the isolated circuits.
This was allowed by the FakeSpec::supports function. However, in the
actual code, the path is as follows:
* AbstractCircMgr::get_or_launch
* AbstractCircMgr::prepare_action
* CircList::find_open
* AbstractSpec::find_supported
* abstract_spec_find_supported
* OpenEntry::supports
* SupportedCircUsage::supports
* StreamIsolation::compatible_same_type
StreamIsolation::compatible_same_type checks owner_type, which is
always zero for non-isolated streams and always non-zero for isolated
streams, meaning that a isolated stream will never be compatible with a
non-isolated stream. The seems like desirable behaviour, so I simply
modified the test to make four connections, two isolated and two not,
and checked that the isolated streams never share any circuits, and that
the two non-isolated streams use the same circuit. As far as I can tell,
this is the intended behaviour in the existing code.
|
| |
|
|
|
| |
This allows us to set SRVs for example (needed because by default, the
test `NetDir` is built from a consensus that doesn't contain any SRVs).
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Having this in the `tor-async-utils` crate prevents us from doing both
of the following without introducing a circular dependency:
* using it in `tor-rtmock` (which we currently do, particularly in
tests).
* using `tor-rtmock` to test things in `tor-async-utils`. We don't do
this yet, but it is generally sensible to do so. In particular we
want to move the `stream_peak` module there, which is currently tested
with `tor-rtmock`.
Moving this into its own crate avoids this circular dependency.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
This updates the code to match the spec.
This fixes TROVE-2024-008.
Closes #1474
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
This is just code motion: moving the vanguard-specific parts of
`maybe_extend_stub_circuit()` behind the `vanguards` feature will enable
us to refactor it to use `select_middle_for_vanguard_circuit()`, which
is only available if the `vanguards` feature is enabled.
|
| | |
|
| |
|
|
|
|
| |
This is a follow up from https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2186#note_3035525
Closes #1459
|
| |
|
|
| |
There's not much to refactor about this line.
|
| | |
|
| |
|
|
|
|
| |
This test is not new (it was added in !2168), but I think it's a good
idea to annotate the tests preventing security issues with the TROVE
number and/or arti ticket they pertain to.
|
| |
|
|
|
|
|
| |
These tests should give us *some* assurance that the upcoming
`HsVanguardPathBuilder` refactoring doesn't break anything.
Part of #1459
|
| |
|
|
| |
Part of #1459
|
| | |
|
| |
|
|
| |
This is less error-prone than the alternative.
|
| | |
|
| |
|
|
| |
target.
|
| |
|
|
|
| |
When extending SHORT circuit stubs, the last hop shouldn't be the same
as the circuit target.
|
| |
|
|
|
|
| |
Otherwise, some of the circuits will fail (because if the target is
selected as one of the L2, L3, or M hops, it won't be able to extend the
circuit to itself).
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
Previously, the HsCircPool had a bug that caused SHORT lite-vanguards
circuits to be incorrectly extended by one hop when being repurposed as
EXTENDED circuits (EXTENDED circuits only need to be extended by extra
hop if full vanguards are in use).
Closes #1456 and #1458
|
| | |
|
| |\
| |
| |
| |
| |
| |
| | |
tor-circmgr: Exclude the circ target when building paths.
Closes #1425
See merge request tpo/core/arti!2179
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
We now return an internal error if the path we've just built contains
the same hop in multiple positions.
|
| | |
| |
| |
| | |
Closes #1425
|
| | |
| |
| |
| | |
target.
|
| | |
| |
| |
| |
| |
| |
| | |
When checking for relay equality, we are happy to accept some false
positives (which result in building/selecting a different circuit). We
want to be less tolerant of false negatives, to avoid accidentally using
a circuit that doesn't have the properties we need.
|
| |/
|
|
|
|
| |
This is a follow-up from !2167.
It should prevent issues like #1417 from going unnoticed.
|
| |
|
|
| |
Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2168?commit_id=3c67fa55c7c5b0c4f30c1d57e8e67fe541d9c99e#note_3033368
|