aboutsummaryrefslogtreecommitdiff
path: root/crates/tor-circmgr/src
Commit message (Collapse)AuthorAgeFilesLines
...
* tor-circmgr: Handle channel creation errors in the new styleIan Jackson2022-02-042-4/+19
|
* spawn errors: Fix arti-client, tor-chanmgr, tor-circmgrIan Jackson2022-02-041-3/+10
| | | | | | | Provide an enum variant to contain the SpawnError and a From impl. We use `#[from]` here because it doesn't really make sense to attach any context, as it's not likely to be very relevant.
* tor-circmgr: impl Display for TargetPortIan Jackson2022-02-041-0/+7
| | | | This will be used for error handling, and perhaps other things.
* tor-circmgr: Turn a type annotation comment into codeIan Jackson2022-02-041-2/+1
| | | | | | | | The type annotation may not be necessary for inference, but as a comment it risks becoming false. So it should be uncommented, or deleted. Error types round here are not entirely trivial so uncomment it.
* Merge branch 'typos' into 'main'eta2022-02-031-1/+1
|\ | | | | | | | | Fix typos See merge request tpo/core/arti!285
| * Fix typosDimitris Apostolou2022-02-021-1/+1
| |
* | Temporarily disable some clippy lints on nightlyIan Jackson2022-02-022-1/+2
| |
* | Untangle two needless Ok(r?) into just rIan Jackson2022-02-021-1/+1
|/ | | | | | Prompted by clippy::needless_question_mark. Sometimes Ok(r?) is needed to do automatic error conversion. I assume the lint checks for that. Anyway, in these cases it's not needed.
* 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
| |