| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
| |
This silences a new nightly warning.
|
| |
|
|
|
|
|
| |
Now that `vanguard_config()` is no longer conditional, we can handle
`vanguard_config` just like other accessors. This is a breaking change,
but I think we may as well make this change while we've already made
another breaking change in the previous commit.
|
| | |
|
| |
|
|
|
| |
These are all aimed at figuring out in more detail what's going on
in #2079 and related issues.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rust was treating this as a wildcard match if the `hs-common` feature
wasn't enabled. This shouldn't have caused any bugs since the other
match arms were already exhaustive, but this could have lead to a bug if
new enum variants were added to `SupportedTunnelUsage`.
```text
warning: variable `HsOnly` should have a snake case name
--> crates/tor-circmgr/src/usage.rs:600:13
|
600 | HsOnly => {
| ^^^^^^ help: convert the identifier to snake case: `hs_only`
|
= note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
warning: `tor-circmgr` (lib) generated 1 warning
```
|
| |
|
|
|
|
|
| |
Abolish the constants with the transitional names.
This also abolishes the controversial name `H_S_DIR`, which Rust case
transformation rules generated from `HSDir`.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
We're going to separate RelayFlag from RelayFlags.
We could continue to provide a bunch of constant values for
RelayFlags, for each individual type, but that would involve an ad-hoc
derive, and would still be a bit of an unusual API.
Instead, we're going to make ``RelayFlag` a normal enum.
In this commit, we change everyone to refer to it by its singular
name. Hopefully separating out this bulk change makes both this, and
the core commit, easier to review.
|
| |
|
|
| |
I would do `#[deprecated]` but empirically that has no effect...
|
| |
|
|
|
| |
Add underscores so that the spec keywords and the flag constants
correspond (according to `paste`'s case-changing rules).
|
| | |
|
| | |
|
| |
|
|
|
| |
(The only error possible is an internal error from
calling it with a non-long-lived tunnel.)
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This code uses the algorithm of prop368: When a tunnel is
sufficiently isolated, we want to expire it after it has been
disused for a certain amount of time.
The implementation is a little tricky, since we need to call an
async function on ClientTunnel to look up the disused_since() check.
We don't want to call async functions while holding locks, so
we need to drop the TunnelList lock before we do the disused_since()
calls, and the grab it again.
As part of this change, I've had made expiration functions return
the earliest time at which any tunnel might expire. We can use
this in the future to spawn fewer expiration tasks, and scan the
list of tunnels less often.
|
| | |
|
| |
|
|
|
| |
Instead of a series of cutoffs, take an object with a set of
lifetimes.
|
| |
|
|
| |
We'll need them to be async so they can call disused_since() on tunnels.
|
| | |
|
| |
|
|
| |
Part of prop368.
|
| |
|
|
| |
Run maint/add_warning
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
This will let us model the actual structure of routerstatus entries in
netdocs more closely. They don't have the addresses in a single list.
When this code was written this would have been much more awkward,
but now we have RPITIT.
|
| |
|
|
| |
This feature has been removed from nightly, in favor of doc_cfg.
|
| |
|
|
|
| |
I've added these in places that are useful for the debugging that I've
been doing.
|
| |\
| |
| |
| |
| |
| |
| | |
proto: Remove half-streams when they expire.
Closes #264
See merge request tpo/core/arti!3267
|
| | |
| |
| |
| |
| | |
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3267#note_3259820
|
| | | |
|
| | |
| |
| |
| |
| | |
This enables us to read the CBT estimates from the circuit reactor (we
need these to compute the half-stream timeouts for #264).
|
| | |
| |
| |
| |
| | |
This will enable us to pass the timeout estimator to the circuit reactor
in tor-proto.
|
| | |
| |
| |
| | |
Closes #2174. See that ticket for rationale.
|
| |/ |
|
| |\
| |
| |
| |
| | |
tor-proto,tor-netdir: add flow control consensus parameters
See merge request tpo/core/arti!3249
|
| | | |
|
| |/ |
|
| |\
| |
| |
| |
| | |
various crates: Updated MSRV TODOs for `once_cell` removal
See merge request tpo/core/arti!2953
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
- Shortened the TODO added in e9ef7bea96c2860fa81d03e8d8da2605d0661425 in the
style of [this maintainer request] for consistency.
[this maintainer request]: https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2953#note_3197719
Signed-off-by: hashcatHitman <[email protected]>
|
| | |
| |
| |
| |
| |
| |
| |
| | |
Replaced use of [`static_assertions::const_assert`] with the newly
available "assert in const" pattern. This completely removes the
dependency on `static_assertions` for `tor-circmgr`.
Signed-off-by: hashcatHitman <[email protected]>
|
| | |
| |
| |
| |
| |
| |
| | |
This is just code motion (I suggest reviewing with `--color-moved`).
This also moves the implementation-agnostic parts from
`tor_proto::client::circuit` to a new `tor_proto::circuit` module.
|
| |\ \
| |/
|/|
| |
| | |
tor-circmgr: Add more logging about timeout estimation.
See merge request tpo/core/arti!3152
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
We're seeing the logic that resets the timeouts when 18/20 connections
fail not triggering when we're expecting it to, this logging may help
figure out what's going on there.
|
| | |
| |
| |
| |
| |
| |
| | |
This is so a relay can build authenticated channels. Several keys/cert
are required for this that are within the key manager.
Signed-off-by: David Goulet <[email protected]>
|
| | | |
|
| |/
|
|
|
|
|
|
|
|
|
|
| |
The `stream` module is client-specific, for the most part, so I am
moving it under `client`. Later on, we will factor out the parts that
can be shared with the relay implementation.
Note: this is a breaking change as the deleted `stream` module was
`pub`. We could've kept the module and reexported from it the public
types from `tor_proto::client::stream`, but I think it's better to have
this `client` namespacing, because it makes the separation between the
client and relay parts clearer.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
This is important, since some circuits require us to negotiate a new
channel, and some don't: by adding this variability, we can easily
learn a timeout based on pre-existing channels to our guards, but
then later time out if it takes a while to open a TLS connection.
This is a possible solution to part of #2079, a bug where we "learn"
a circuit timeout that is too low for us to satisfy.
|
| | |
|