summaryrefslogtreecommitdiff
path: root/crates/tor-chanmgr
Commit message (Collapse)AuthorAgeFilesLines
...
| | * chanmgr: Make "pt-client" non-experimental.Nick Mathewson2022-11-182-4/+9
| | |
| * | ChanMgr: Log every conection attempt at debug.Nick Mathewson2022-11-171-0/+2
| | |
* | | Replace TransportRegistry with AbstractPtMgreta2022-11-224-42/+33
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It doesn't make much sense to have the pluggable transport manager be a registry, so replace its interface with a more narrowly defined, less generic version. Other changes: - instead of returning a &-reference, it returns an owned Arc, which should make the ptmgr easier to implement while allowing efficient reuse - provision for error handling is added, but will probably be revised in a future commit pending discussion - tor-ptmgr code that would generate warnings as a result of this change is temporarily removed This is a split out version of arti!886, intended so work on arti#659 can proceed.
* | chanmgr: rename new_test_channel_map to new_test_state.Nick Mathewson2022-11-161-5/+5
| |
* | chanmgr::mgr::*: misc spelling fixes and normali[sz]ationsNick Mathewson2022-11-162-6/+6
| |
* | Fix up documentation that referred to a ChannelMap.Nick Mathewson2022-11-162-18/+17
| |
* | ChanMgr: Rename map.rs to state.rsNick Mathewson2022-11-163-9/+9
| | | | | | | | This is another pure renaming.
* | ChanMgr: Rename ChannelMap to MgrStateNick Mathewson2022-11-162-7/+7
|/ | | | | | | | | We're doing this because the type now holds "all the mutable state in a ChanMgr", not just the map. This is a pure renaming; no documentation has been updated. Part of #606.
* bump rust-version to 1.60 in every crate.Nick Mathewson2022-11-101-1/+1
|
* ChanMgr: downgrade and remove a few TODO-ptclient commentsNick Mathewson2022-11-082-5/+1
| | | | renamings are now #623. Code movement can happen later.
* Suppress two clippy::large_enum_variant warningsNick Mathewson2022-11-031-0/+1
| | | | These are newly present on 1.65. We can address them later.
* Run add_warnings.Nick Mathewson2022-11-031-0/+1
|
* Require derive_more 0.99.3Ian Jackson2022-11-031-1/+1
| | | | | | | | 0.99.[012] have a bug https://github.com/JelteF/derive_more/issues/114 which makes the Deref derive for bridgedesc::StateGuard not work and therefore breaks minimal-versions CI. It seems simpler to require the newer version everywhere.
* Merge branch 'guards_as_bridges_part1' into 'main'Nick Mathewson2022-10-241-4/+2
|\ | | | | | | | | Allow GuardMgr to expose bridges as guards (part 1) See merge request tpo/core/arti!785
| * guardmgr: Refactor the interior of FirstHop.Nick Mathewson2022-10-241-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Now it contains either an `OwnedChanTarget` or an `OwnedCircTarget`, which will let `GuardMgr` return bridges that can be used to make circuits. As part of this change, it was necessary to revise some address-modification functions that applied to filters and `OwnedChanTarget`. Now they do the smart thing, and remove only the address that are in the `ChanMethod`. This means that the addresses from HasAddrs are still accurate about which addresses the relay "has".
* | tor-chanmgr: Suppress an unused imports warning for `use super::*`Ian Jackson2022-10-211-0/+1
|/ | | | | If pt-client is disabled, there are in fact no tests, so the module is empty. But we would always want `use super::*` here.
* Oops: Mark some imports as pt-client only.Nick Mathewson2022-10-211-3/+9
| | | | This causes CI problems, and is entirely my fault.
* transport: Escape = signs in keys only.Nick Mathewson2022-10-201-8/+13
| | | | | | | This is a compromise between C tor (never escapes = signs) and the spec (calls for escaping all = signs). In C tor there is no way to actually construct a key with an = sign in it, so this difference should be undetectable.
* Clarify comment on ExternalProxyPlugin.Nick Mathewson2022-10-201-1/+2
|
* transport: rename "ExtraneousData" to "UnexpectedData"Nick Mathewson2022-10-201-5/+5
|
* chanmgr: Add the code necessary to use SOCKS PTs via a TransportHelperNick Mathewson2022-10-204-5/+254
| | | | | This is mostly a matter of encoding parameters in the format used for socks authentication.
* chanmgr: Begin a socks-client implementation.Nick Mathewson2022-10-203-0/+219
| | | | | | | This code is _not_ conditional, since we want to support running with a proxy even if we don't support pluggable transports. We may eventually want to refactor this into a new create.
* Fix various typos (using typos tool and hand-inspection)Nick Mathewson2022-10-183-5/+5
|
* chanmgr: Add an error case if a final_attempt neither succeeds or failsNick Mathewson2022-10-182-1/+11
| | | | | This can happen in weird corner cases, so it's probably best to report it rather than having an "internal error."
* Refactor flow control in get_or_launch.Nick Mathewson2022-10-182-54/+97
| | | | | | | Now, instead of duplicate checks in various cases, we simply go through the loop one last time. This allows us to simplify some of our other logic around here.
* chanmgr: Split get_or_launch into sub-functions.Nick Mathewson2022-10-181-92/+95
| | | | | This function had grown huge and hard to reason about. Before I make it even worse, let's split it up.
* chanmgr: Refactor choose_action code into its own function.Nick Mathewson2022-10-181-86/+92
|
* Clarify a comment about the desired structure of ChanMgrNick Mathewson2022-10-181-1/+2
|
* Comments to explain effects of return in closure.Nick Mathewson2022-10-181-2/+6
|
* chanmgr: Remove "Ident" from AbstractChannelNick Mathewson2022-10-185-84/+24
| | | | | Thanks to our previous changes, we no longer need this type, or the methods that access it.
* chanmgr: replace the HashMap<> with a ByRelayIds.Nick Mathewson2022-10-184-312/+312
| | | | | | | | | | | | | | | | | | This is necessary so that we can look up channels (open and pending) by all of the Ids that we know about them. The operations needed here are pretty complex: to get them right, I've replaced most of the accessors on the inner `ChannelMap` with a function that holds the lock while another `FnOnce` is called. This still gets us the invariant that we can't accidentally await while holding the lock on the `ChannelMap`. I've removed the tests for the accessors that are no longer there. There are some subtleties here. Now that we have more than one kind of Id, it's possible to have a partial match. I've tried to explain all these cases in the comments. }
* chanmgr: Add identities to pending state in map.Nick Mathewson2022-10-182-8/+46
| | | | | This will let us migrate from `HashMap<Ed25519Identity, Entry>` to `ByRelayIds<Entry>`.
* chanmgr: Require HasRelayIds for AbstractChannel::BuildSpecNick Mathewson2022-10-182-24/+50
| | | | | | This is mostly a testing only change for now too, but soon I'll use it to deal with the fact that we need to know the IDs to actually build a channel at all.
* chanmgr: Require HasRelayIds for AbstractChannel.Nick Mathewson2022-10-182-1/+43
| | | | | This is mostly a testing-only change for now, but soon I'll use it so we can have IdMap for our channel map.
* chanmgr: Remove the Poisoned state from the map type.Nick Mathewson2022-10-182-48/+12
| | | | | | | | The `ByRelayIds` type doesn't have a type equivalent to `hash_map::Entry`, since it's a set type rather than a map type. Therefore, the only plausible way to do entry mutation will be to remove the old entry and insert a new one. And so, we no longer need a "poisoned" state.
* chanmgr: Edit comments, fix docsNick Mathewson2022-10-134-18/+49
|
* chanmgr: Remove RegistryAsFactory.Nick Mathewson2022-10-131-11/+6
| | | | | Since there is no longer a blanket implementation of ChannelFactory for TransportHelper, we no longer need a separate type here.
* ChanMgr: Reorganize factory, builder, transport code.Nick Mathewson2022-10-136-282/+330
| | | | There is no actual code change here: just movement.
* Merge branch 'factory_redux' into 'main'Nick Mathewson2022-10-137-133/+224
|\ | | | | | | | | chanmgr: Build and use chanmgr factory APIs See merge request tpo/core/arti!769
| * Flatten TimeoutChannelFactory into ChannelBuilder.Nick Mathewson2022-10-132-48/+30
| |
| * chanmgr: clean up some TODO pt-client items and documentation.Nick Mathewson2022-10-133-80/+23
| |
| * Allow multiple ChannelBuilders to share a ChanMgrEventSender.Nick Mathewson2022-10-132-4/+9
| |
| * chanmgr: Use ChannelFactory via a Box<dyn<ChannelFactory>>.Nick Mathewson2022-10-132-4/+28
| | | | | | | | | | This will prepare for supporting multiple different ChannelFactory implementations.
| * chanmgr: Move Timeout functionality into a decorator object.Nick Mathewson2022-10-132-12/+51
| |
| * Have ChannelBuilder use TransportHelper.Nick Mathewson2022-10-134-27/+92
| | | | | | | | | | | | This lets us build channels using different TransportHelpers, including the (new) default TransportHelper, which just uses the old connect_to_one() code.
| * Implement ChannelFactory for (a wrapper of) TransportRegistry.Nick Mathewson2022-10-121-1/+23
| | | | | | | | This will let us just have ChanMgr take a `dyn ChannelFactory`.
| * chanmgr: Clean up async-ness on factory types.Nick Mathewson2022-10-121-9/+17
| | | | | | | | | | | | | | | | The traits that launch connections need to be async; the traits that don't, shouldn't be async. Additionally, we need a few more "Sync" annotations here for the futures to work.
| * Rename mgr::ChannelFactory to mgr::AbstractChannelFactoryNick Mathewson2022-10-123-19/+22
| | | | | | | | | | | | | | | | | | This is an internal type (distinct from factory::ChannelFactory) that we use to make the code in `tor_chanmgr::mgr` agnostic about what a channel actually is, and how it is actually launched. Therefore, I'm renaming it and giving better documentation in a couple of places, to prevent confusion.
* | cargo fmt to remove blank linesIan Jackson2022-10-121-1/+0
| | | | | | | | | | | | | | Apparently cargo fmt doesn't like these, which my perl rune didn't delete. This commit is precisely the result of `cargo fmt`.
* | Replace all README copies in src/lib.rs with includesIan Jackson2022-10-121-33/+1
|/ | | | | | | | The feature we want is `#[doc = include_str!("README.md")]`, which is stable since 1.54 and our MSRV is now 1.56. This commit is precisely the result of the following Perl rune: perl -i~ -0777 -pe 's{(^//!(?!.*\@\@).*\n)+}{#![doc = include_str!("../README.md")]\n}m' crates/*/src/lib.rs