summaryrefslogtreecommitdiff
path: root/crates/tor-circmgr/src
Commit message (Collapse)AuthorAgeFilesLines
* Rename FooRuntime to FooNativeTlsRuntime for consistency.Nick Mathewson2022-01-261-1/+1
|
* Merge branch 'ticket255' into 'main'eta2022-01-241-1/+1
|\ | | | | | | | | | | | | Refactor our Runtime implementations to allow replacement parts Closes #255 See merge request tpo/core/arti!251
| * Refactor Runtimes to use separate TLS implementations internally.Nick Mathewson2022-01-191-1/+1
| | | | | | | | | | This will make it easier to implement them using some other TLS provider as well, without having to duplicate all of our code.
* | StreamPrefs: rename from ConnectPrefsIan Jackson2022-01-211-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | The docs even say this is about stream. As @nickm writes in https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/252#note_2771289 we generally call end-to-end connections that are tunneled over Tor "Streams" to distinguish them from everything else in the Tor protocols that could possibly be called a "Connection". That seems to apply here too.
* | Test for PathConfig::at_least_as_permissive_as().Nick Mathewson2022-01-201-0/+29
| | | | | | | | | | | | This is totally not just an exercise to get combined test coverage for tor-circmgr over 90% because I needed something to do that wouldn't distract anybody else. :)
* | Rename PathConfig::more_permissive_than()Nick Mathewson2022-01-202-2/+4
| | | | | | | | | | | | Since it implements a "<=" type relationship, it should be called "at_least_as_permissive_as()." Since it's a crate-private function, the long name isn't too bad.
* | Remove "self" arg from PathConfig::builder()Nick Mathewson2022-01-201-1/+1
|/ | | | This was added by mistake.
* Merge branch 'ticket_178' into 'main'eta2022-01-101-0/+12
|\ | | | | | | | | | | | | Fix ticket 178: Don't use a NetDir until we have microdescriptors for all of our primary guards. Closes #178 See merge request tpo/core/arti!220
| * Add API to check if primary MDs are missing.Nick Mathewson2022-01-061-0/+12
| | | | | | | | | | | | | | We need this information to know if it's okay to migrate to a new NetDir, or if we need to download more information first. Part of #178.
* | Merge branch 'circ_self_by_ref'Nick Mathewson2022-01-073-34/+40
|\ \
| * | circmgr: Fix a pair of clippy warnings.Nick Mathewson2022-01-071-2/+2
| | |
| * | tor-circmgr: Remove Arc around ClientCircIan Jackson2022-01-073-15/+15
| | | | | | | | | | | | | | | | | | See the new commentary text on `ClientCirc` for the rationale. Signed-off-by: Ian Jackson <[email protected]>
| * | tor-circmgr: tests: Do fake circuit equality by idIan Jackson2022-01-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | We are going to get rid of the Arc. Happily there is an id which is always constructed uniquely and preserved by clone. (auto-deref lets us make the function take &Self instead of &Arc) Signed-off-by: Ian Jackson <[email protected]>
| * | tor-circmgr: tests: Introduce and use FakeCirc::eq()Ian Jackson2022-01-071-13/+19
| | | | | | | | | | | | | | | | | | This removes a lot of open-coded Arc::ptr_eq() calls Signed-off-by: Ian Jackson <[email protected]>
| * | tor-circmgr: Replace some Arc::clone with .clone()Ian Jackson2022-01-071-5/+5
| | | | | | | | | | | | | | | | | | This will make the code work when it's not an Arc any more. Signed-off-by: Ian Jackson <[email protected]>
| * | tor-circmgr: Require that AbstractCirc are CloneIan Jackson2022-01-071-1/+1
| | | | | | | | | | | | | | | | | | | | | We are going to get rid of a lot of Arc, so we need the underlying thing to be Clone. Signed-off-by: Ian Jackson <[email protected]>
* | | Merge branch 'remove-type-annotation' into 'main'Nick Mathewson2022-01-071-1/+1
|\ \ \ | |/ / |/| | | | | | | | tor-circmgr: Remove a type annotation in a method call See merge request tpo/core/arti!225
| * | tor-circmgr: Remove a type annotation in a method callIan Jackson2022-01-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This is a method, so the resolution is automatic. It's not clear to me why this was written out this way, given that extend_ntor is right above. Signed-off-by: Ian Jackson <[email protected]>
* | | De-Arc-ify Buildable for ClientCircNeel Chauhan2022-01-062-14/+7
|/ /
* | Merge branch 'main' into 'remove_unused_rngs'eta2022-01-062-2/+2
|\| | | | | | | # Conflicts: # crates/tor-circmgr/src/build.rs
| * Merge remote-tracking branch 'origin/mr/214'Nick Mathewson2022-01-061-0/+1
| |\
| | * extend lints to include 'clippy::all'Daniel Eades2021-12-281-0/+1
| | |
| * | tor-circmgr: Don't clone parameters in create_chantarget()Neel Chauhan2021-12-251-2/+1
| |/
* / Remove a bunch of unused RNGsNeel Chauhan2021-12-252-51/+23
|/
* Only count timeouts when we've seen net activity.Nick Mathewson2021-12-201-5/+7
| | | | | | | This closes arti#256. It makes our behavior match Tor's more closely, though it has a simpler implementation than Tor. I think that the extra complexity in Tor's logic is because we used to record timeouts in the histogram as well as in the success/failure log.
* Merge branch 'eta/instant-checked-add' into 'main'Nick Mathewson2021-12-201-2/+12
|\ | | | | | | | | preemptive.rs: Use Instant::checked_add instead of raw subtraction See merge request tpo/core/arti!206
| * preemptive.rs: Use Instant::checked_add instead of raw subtractioneta2021-12-201-2/+12
| | | | | | | | | | | | | | | | | | | | | | The implementations of `Add` / `Sub` (et al.) on `std::time::Instant` can panic if the underlying OS structure can't represent the result (like arti#266). Use Instant::checked_add and print a warning instead, to prevent panicking. Also, we now add instead of subtracting; I suspect it's reasonable that you might not be able to go backward past the first `Instant` created on some platforms, but going *forward* should probably work?
* | Remove XXXs from tor-circmgr::mgrNick Mathewson2021-12-201-4/+0
| | | | | | | | | | | | IIUC, these anticipatd a need to store min_exit_circs_per_port in CircMgr. But the current design, where it goes into preemptive.rs and thence to usage, seems to work fine.
* | Adjust comment to be accurate wrt #263.Nick Mathewson2021-12-161-3/+5
| |
* | Do not treat spawn failure as a fatal error.Nick Mathewson2021-12-151-12/+12
| |
* | Expand some comments about circuit expiration.Nick Mathewson2021-12-152-6/+14
| | | | | | | | | | Emphasize that circuit expiration functions _decide whether to expire the circuit_, and don't expire it automatically.
* | Add spawn_expiration_task function in circuit managerYuan Lyu2021-12-152-54/+105
|/
* Merge branch 'reconfigure' into 'main'eta2021-12-137-69/+233
|\ | | | | | | | | Make most arti-client fields reconfigurable. See merge request tpo/core/arti!181
| * Fix Rustdoc errors.Nick Mathewson2021-12-081-3/+3
| |
| * Minor circuit predictor tweaks and comments.Nick Mathewson2021-12-071-3/+11
| | | | | | | | | | | | Most notably, make min_exit_circs_for_port actually get used. Also add a couple of comments.
| * Make preemptive circuits reconfigurable.Nick Mathewson2021-12-073-43/+79
| | | | | | | | | | | | This required re-centralizing the configuration object for preemptive circuits, since previously the settings from it were a bit spread out over the crate.
| * Make circuit_timing reconfigurable.Nick Mathewson2021-12-073-18/+26
| |
| * Add new configuration objects to reconfigure.Nick Mathewson2021-12-071-5/+9
| | | | | | | | | | (These weren't in the codebase when I started the first version of this branch.)
| * Allow on-the-fly changing of path_rulesNick Mathewson2021-12-076-18/+100
| | | | | | | | | | | | | | | | | | | | | | | | And now the complexity begins: when the user changes the path_rules, they not only want new circuits to obey those rules: they want _all new requests_ to be put onto circuits that obey those rules. That means that when the path rules become more restrictive, we need to retire all the circuits, and make sure that currently pending circuits aren't used for any requests. If it's any comfort, doing this was even more complicated in C tor. ;)
| * Sketch API for reconfiguration.Nick Mathewson2021-12-073-5/+31
| | | | | | | | | | | | | | This patch doesn't actually make anything reconfigurable, but it does create an API that will tell you "you can't change the value of that!" If the API looks reasonable, I can start making it possible to change the values of individual items.
* | Don't create circuits if the consensus is stale by over 72 hoursNeel Chauhan2021-12-122-0/+11
| |
* | fix nightly clippy errorsTrinity Pointard2021-12-091-2/+1
| |
* | Use a safer histogram rebuild algorithm.Nick Mathewson2021-12-081-9/+14
| | | | | | | | | | Our old algorithm could, on some inputs, exhaust RAM. That's not great, since we try to be robust againt corruption to the state file.
* | Change an XXX in pareto.rs: a ticket is now open.Nick Mathewson2021-12-081-2/+3
| |
* | Resolve an XXXX: timeout scaling _is_ documentedNick Mathewson2021-12-081-1/+2
|/
* Clarify names and docs for predictive circuits.Nick Mathewson2021-12-072-20/+30
| | | | | Also, use humantime_serde, rather than a number of seconds, to indicate configuration time.
* Rename circuits_preemptive to preemptive_circuitsNick Mathewson2021-12-072-18/+18
| | | | | | This obeys a few conventions: * adjective before noun * config objects end with "config"
* Merge branch 'bug183a_redux' into 'main'eta2021-12-071-6/+5
|\ | | | | | | | | | | | | Squash, refactor, and test !139 (Don't use same family as exit when picking a guard) Closes #183 See merge request tpo/core/arti!173
| * Move the "real families" code into tor-netdir.Nick Mathewson2021-12-061-15/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Just as `in_same_family` is a member of Relay, so the function for getting all the real family members of a relay should belong in the same crate. This change also removes the `family()` accessor: it gives the _claimed_ family rather than the _acknlowedged_ family, and is therefore a bit dangerous. There's still a hole in this logic; I've noted it in the Limitations section. If we get a microdescriptor for a relay in between creating and using the guard restriction, it might be omitted from the family list.
| * Use hashset _inside_ GuardRestriction.Nick Mathewson2021-12-061-6/+4
| | | | | | | | This approach saves us from a linear search when picking guards.