| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
serde support for PtTarget
See merge request tpo/core/arti!780
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
This will let us remember bridges that use pluggable transports.
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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).
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
Implement a TransportHelper to connect via a SOCKS-based pluggable transport
See merge request tpo/core/arti!776
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This is mostly a matter of encoding parameters in the format used
for socks authentication.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | | | | | |
|
| | | | | | |
|
| |\ \ \ \ \
| |_|/ / /
|/| | | |
| | | | |
| | | | | |
Use BridgeConfig to identify bridges in two places
See merge request tpo/core/arti!781
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The target is identified by Into<OwnedChanTarget>.
We introduce corresponding TargetCircUsage and SupportedCircUsage.
|
| | | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| |\ \ \ \
| |/ / /
|/| | |
| | | |
| | | | |
impl ChanTarget for BridgeConfig
See merge request tpo/core/arti!783
|
| | | | | |
|
| | | | | |
|
| |/ / /
| | |
| | |
| | | |
Eg, a PT bridge may not have an address.
|
| |/ /
| |
| | |
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
|
| |\ \
| | |
| | |
| | |
| | | |
shadow ci: Set stop time to 30m instead of 27m
See merge request tpo/core/arti!772
|
| | |/
| |
| |
| |
| | |
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.
|
| |\ \
| | |
| | |
| | |
| | | |
fix a couple of spelling errors in guardmgr
See merge request tpo/core/arti!778
|
| |/ / |
|
| |\ \
| | |
| | |
| | |
| | | |
Several spelling fixes.
See merge request tpo/core/arti!777
|
| | | | |
|
| |/ / |
|
| |\ \
| | |
| | |
| | |
| | | |
ChanMgr: Revise code to tolerate multiple identities
See merge request tpo/core/arti!773
|
| | | |
| | |
| | |
| | |
| | | |
This can happen in weird corner cases, so it's probably best to
report it rather than having an "internal error."
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
| | |
| | |
| | |
| | | |
This function had grown huge and hard to reason about. Before I
make it even worse, let's split it up.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
Thanks to our previous changes, we no longer need this type, or the
methods that access it.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
}
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
| | |
| | |
| | |
| | | |
This will let us migrate from `HashMap<Ed25519Identity, Entry>` to
`ByRelayIds<Entry>`.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
| | |
| | |
| | |
| | | |
This is mostly a testing-only change for now, but soon I'll use it
so we can have IdMap for our channel map.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
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.
|
| |/ /
| |
| |
| |
| |
| |
| | |
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.
|
| |\ \
| |/
|/|
| |
| |
| |
| | |
Add a few tests for RelayId and friends
Closes #605
See merge request tpo/core/arti!774
|
| | | |
|
| | | |
|