aboutsummaryrefslogtreecommitdiff
path: root/crates/tor-circmgr/src/hspool.rs
Commit message (Collapse)AuthorAgeFilesLines
...
* tor-circmgr: Remove unnecessary Result wrapping.Gabriela Moldovan2024-03-201-7/+7
|
* tor-circmgr: Add an explanation and a couple of TODOs.Gabriela Moldovan2024-03-201-0/+8
|
* tor-circmgr: Clarify the TODO in launch_hs_circuits_as_needed.Gabriela Moldovan2024-03-201-2/+12
|
* tor-circmgr: s/can_build/can_become.Gabriela Moldovan2024-03-201-2/+2
|
* tor-circmgr: Move match block to a separate function.Gabriela Moldovan2024-03-201-15/+20
|
* tor-circmgr: Tell HsPathBuilder what kind of circuit stub is needed.Gabriela Moldovan2024-03-201-2/+6
|
* tor-circmgr: Handle the take_or_launch_stub_circuit result.Gabriela Moldovan2024-03-201-0/+13
|
* tor-circmgr: Make take_or_launch_stub_circuit vanguard-aware.Gabriela Moldovan2024-03-201-8/+59
|
* tor-circmgr: Add functions for checking if vanguards are enabled.Gabriela Moldovan2024-03-201-0/+12
|
* tor-circmgr: For each HS ClientCirc, note whether it's STUB or STUB+.Gabriela Moldovan2024-03-201-19/+95
| | | | Closes #1276
* Annotate usage of low_level_predicate_permits_relayNick Mathewson2024-03-121-0/+8
|
* Rename the RelayPredicate trait to discourage its being used directly.Nick Mathewson2024-03-121-2/+4
| | | | Everybody who can, should instead use a RelaySelector.
* Add comments about "unaccompanied" use of Relay{Usage,Exclusion}Nick Mathewson2024-03-121-0/+2
| | | | | | When used outside of RelaySelector, these two types don't enforce one another's presence, and as such have a bit more risk of negligent use.
* hspool: Replace TargetInfo with a RelayExclusion.Nick Mathewson2024-03-121-53/+17
|
* tor-circmgr: Add HsCircPoolConfig, make HsCircPool::reconfigure general-purpose.Gabriela Moldovan2024-03-111-7/+14
|
* tor-circmgr: Rename Pool::reconfigure to Pool::reconfigure_vanguards.Gabriela Moldovan2024-03-111-1/+1
|
* tor-circmgr: Add functions for reconfiguring the HS circuit pool.Gabriela Moldovan2024-03-111-0/+16
| | | | | If the vanguard "mode" (full/lite/disabled) changes, we purge all the circuits from the HS circuit pool because they are no longer suitable.
* tor-circmgr: Add UniqId to Error::Protocol.Gabriela Moldovan2024-02-271-0/+1
| | | | Part of #1297
* tor-circmgr: Add UniqId to CircTimeout.Gabriela Moldovan2024-02-271-1/+1
| | | | Part of #1297
* Mark code with "TODO #504" and "TODO #789".Nick Mathewson2024-02-221-0/+2
| | | | | | | | I've done this by looking for every non-test instance of pick_relays or pick_n_relays, and for every non-test usage of any non-ID-related method on Relay or UncheckedRelay. Part of #504.
* netdir: Explain why there is no HsRend WeightRule.Nick Mathewson2024-01-141-0/+6
|
* circmgr: Use event_report!() and similar macrosNick Mathewson2023-07-071-6/+4
| | | | This simplifies our logging a little, and implements part of
* tor-circmgr: Provide estimate_timeout as a method on HsCircPoolIan Jackson2023-06-291-1/+21
|
* circmgr: Refactor duplicate logic.Nick Mathewson2023-06-281-27/+21
| | | | | These two functions are only slightly different, and benefit from taking a Fn.
* circmgr: Remove a "TODO HS" about path restrictions.Nick Mathewson2023-06-281-3/+0
| | | | | I looked through the C tor source code and couldn't find any additional path restrictions.
* circmgr: Defer two "TODO HS" in hspoolNick Mathewson2023-06-281-2/+2
| | | | One of these is test-related; one is vanguards-related.
* hspool: Use let-else pattern; our MSRV permits it.Nick Mathewson2023-06-221-6/+2
|
* circmgr: Use path_ref() instead of path().Nick Mathewson2023-06-221-24/+45
|
* circmgr: Make hspool size dynamicNick Mathewson2023-06-161-19/+10
| | | | | | | | | | | | | | Previously we'd always try to keep 8 circuits ready. That doesn't make sense if we are super-busy. Instead, if we run out of circuits, we double the amount that we try to keep ready, and if we never go under 80% of our target number, we half the number we try to keep ready. We limit the rate of change here, to make sure that we aren't flapping too much or shrinking too aggressively. This algorithm is still a mite arbitrary, and will need tuning in the future.
* circmgr::hspool: Move the Mutex into an intermediary Inner structNick Mathewson2023-06-161-24/+42
| | | | This will be helpful as we complexify the pool behavior a bit.
* circmgr: Remove TODOS about retrying.Nick Mathewson2023-06-161-5/+0
| | | | | | These functions' documentation already says that they don't retry, and hsclient appears to be where we are concentrating our retry efforts.
* Refactor ClientCirc APIs to use Arc<ClientCirc>.Nick Mathewson2023-05-161-3/+3
| | | | | | | | | | | | Now ClientCirc is no longer `Clone`, and the things that need it to be `Clone` instead return and use an Arc<ClientCirc> We're doing this so that ClientCirc can participate in the RPC system, and so that its semantics are more obvious. Closes #846. Thanks to the type system, this was a much simpler refactoring than I had feared it would be.
* hspool: Accept any T:CircTarget.Nick Mathewson2023-05-101-9/+26
| | | | | | Previously, we only accepted an OwnedCircTarget, which would have kept us from getting a circuit that was aimed at a specialized CircTarget that gave us LinkSpecs in a raw order.
* tor-circmgr: HsCircKind: derive EqIan Jackson2023-04-051-1/+1
|
* tor-circmgr: Make take_or_launch_stub_circuit future SendIan Jackson2023-03-301-2/+1
| | | | | thread_rng() isn't Send. We can fix this by not holding it over an await point.
* hspool: simplify loop and add a maximumNick Mathewson2023-03-221-41/+39
|
* hspool: Clarify/document more TODO HS items.Nick Mathewson2023-03-221-2/+8
|
* hspool: Tweak comments and add more TODOs.Nick Mathewson2023-03-221-10/+33
|
* circmgr: hspool now launches circuits in the background.Nick Mathewson2023-03-221-11/+157
| | | | | | The prediction and scheduling logic here is quite primitive; we should probably refactor it considerably. This should be good enough for now, though.
* circmgr: Add an actual pool to HsCircPool.Nick Mathewson2023-03-221-6/+121
| | | | | | | | We now have support for a pool of pre-build circuits that we can use for HS-related purposes, and we take circuits from this pool as needed. Nothing populates or cleans the circuit pool yet.
* circmgr: Begin an HS circuit pool structureNick Mathewson2023-03-221-0/+150
This is now enough to launch circuits on demand. It still needs to pre-build the first three hops, and to retry on failure.