summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | Implement serde for PtTarget and its members.Nick Mathewson2022-10-203-5/+21
| | | | | | | | | | | | | | | | This will let us remember bridges that use pluggable transports.
| * | | Inline now-needless variant constructors for PtTargetAddrNick Mathewson2022-10-201-22/+2
| | | |
| * | | Remove a now-needless `allow(dead_code)`Nick Mathewson2022-10-201-1/+0
| | | |
| * | | linkspec: Always expose PT-related types.Nick Mathewson2022-10-202-46/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `PtTarget` type and its contents (`TransportName`, `PtTargetAddr`, `PtSettings`) are now unconditionally compiled and exposed. This will allow us to serialize and deserialize them in our guard-state files even when we have been built without explicit PT support. The `pt-client` feature controls whether `TransportName` is a variant of `TransportId`, and whether `PtTarget` is a variant of `ChanMethod`: this in turn means that we'll still have simpler binary code and smaller structures when we're building without PT support (which is what we wanted when we initially made these types conditional).
* | | | Merge branch 'connect-via-proxy' into 'main'Nick Mathewson2022-10-208-3/+479
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | Implement a TransportHelper to connect via a SOCKS-based pluggable transport See merge request tpo/core/arti!776
| * | | | 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-204-0/+220
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | socksproto: Make a method conditional.Nick Mathewson2022-10-201-0/+1
| | | | |
| * | | | socksproto: impl Clone for Error.Nick Mathewson2022-10-202-2/+2
| | | | |
* | | | | Merge branch 'bridge-internal-apis' into 'main'Ian Jackson2022-10-204-6/+48
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | | | | | | Use BridgeConfig to identify bridges in two places See merge request tpo/core/arti!781
| * | | | tor-linkspec: impl From<&ChanTarget> for OwnedChanTargetIan Jackson2022-10-201-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This lets us write functions which can either take an existing owned OwnedChanTarget, or copy out of some other kind of ChanTarget passed by reference.
| * | | | circmgr: Plumbing for direct to target directory circuitsIan Jackson2022-10-202-2/+29
| | | | | | | | | | | | | | | | | | | | | | | | | The target is identified by Into<OwnedChanTarget>. We introduce corresponding TargetCircUsage and SupportedCircUsage.
| * | | | bridge descriptors: Change types of the descriptor cacheIan Jackson2022-10-201-3/+12
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | Now keyed by Arc<BridgeConfig>, and the values can be errors. Currently there is no implementation so there can't be any errors, but the error enum will become nonempty.
* | | | Merge branch 'bridge-hasaddrs' into 'main'Ian Jackson2022-10-203-2/+50
|\ \ \ \ | |/ / / |/| | | | | | | | | | | impl ChanTarget for BridgeConfig See merge request tpo/core/arti!783
| * | | impl ChanTarget etc. for BridgeConfigIan Jackson2022-10-201-1/+17
| | | |
| * | | impl HasAddrs for PtChannelAddr and ChannelMethodIan Jackson2022-10-201-0/+29
| | | |
| * | | HasAddrs: Make it clear that the set of addresses can be emptyIan Jackson2022-10-201-1/+4
|/ / / | | | | | | | | | Eg, a PT bridge may not have an address.
* / / integration-shadow: "shadow-small" tag -> "tpa"Jim Newsome2022-10-191-1/+1
|/ / | | | | The "shadow-small" tag no longer exists, and all "tpa" x86-64 runners can now run Shadow. https://gitlab.torproject.org/tpo/tpa/team/-/issues/40833#note_2835576
* | Merge branch 'update-shadow-stop-time' into 'main'Nick Mathewson2022-10-191-4/+1
|\ \ | | | | | | | | | | | | shadow ci: Set stop time to 30m instead of 27m See merge request tpo/core/arti!772
| * | shadow ci: Set stop time to 30m instead of 27mJim Newsome2022-10-141-4/+1
| |/ | | | | | | | | This was a temporary stop-gap to work around a busy loop that seemed to happen before. I am no longer able to reproduce any such problem.
* | Merge branch 'guard_spelling' into 'main'Nick Mathewson2022-10-192-2/+2
|\ \ | | | | | | | | | | | | fix a couple of spelling errors in guardmgr See merge request tpo/core/arti!778
| * | fix a couple of spelling errors in guardmgrNick Mathewson2022-10-192-2/+2
|/ /
* | Merge branch 'spelling_20221008' into 'main'Nick Mathewson2022-10-188-12/+12
|\ \ | | | | | | | | | | | | Several spelling fixes. See merge request tpo/core/arti!777
| * | Fix various typos (using typos tool and hand-inspection)Nick Mathewson2022-10-187-10/+10
| | |
| * | linkspec: Fix typo in error messages.Nick Mathewson2022-10-181-2/+2
|/ /
* | Merge branch 'channel_map' into 'main'Nick Mathewson2022-10-1812-502/+778
|\ \ | | | | | | | | | | | | ChanMgr: Revise code to tolerate multiple identities See merge request tpo/core/arti!773
| * | 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. }
| * | proto: Make Channel::reparameterize take &self.Nick Mathewson2022-10-182-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Even though channels are practically changeable, they use locks internally so that you don't need a `&mut Channel` to send or receive traffic. It makes sense for reparameterizing the channel to also use a &self reference. I'll need this so that I can store channels in an `ByRelayIds<>` set, and still invoke their reparameterize methods.
| * | 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.
| * | proto: Implement HasRelayIds for Channel.Nick Mathewson2022-10-182-0/+10
| | |
| * | linkspec: Add ByRelayIds::remove_exact.Nick Mathewson2022-10-181-0/+65
| | | | | | | | | | | | | | | We need a function to remove an entry if it appears with _exactly_ the same relay Ids, but not otherwise. This method will do that.
| * | linkspec: Add an "all_overlapping" accessor to ByRelayIds.Nick Mathewson2022-10-184-1/+124
|/ / | | | | | | | | | | | | Also, add a few tests for this and the other accessors. We'll need this accessor to find whether we have any channels to _any_ of the identities that we're trying to connect to.
* | Merge branch 'id_tests' into 'main'eta2022-10-175-2/+264
|\ \ | |/ |/| | | | | | | | | Add a few tests for RelayId and friends Closes #605 See merge request tpo/core/arti!774
| * Write more tests for RelayId and RelayIdRef.Nick Mathewson2022-10-151-0/+138
| |
| * Write tests for RelayIdSet.Nick Mathewson2022-10-153-0/+122
| |
| * Fix deserialize impl for RelayId.Nick Mathewson2022-10-151-1/+1
| | | | | | | | | | | | | | We need to handle String, not just str, since some deserializers have to handle escapes and generate new strings. Found while writing tests; fixes #605.
| * linkspec: impl Hash for RelayIdRefNick Mathewson2022-10-152-1/+3
|/