- Apr 25, 2022
-
-
Ian Jackson authored
These were omitted in the earlier commits.
-
Ian Jackson authored
-
- Apr 22, 2022
-
-
Ian Jackson authored
In tpo/core/arti!462 (comment 2797697) we decided not to do this. However, having looked again at the way the FallbackList works, I think there is a lot of value in making these two things (and anything else like them[1]) as similar as possible. [1] At least PreemptiveCircuitConfig.initial_predicted_ports and NetworkConfig.authorities need the same treatment, and perhaps also GuardUsage.restrictions (although there is no GuardRestrictionBuilder). In the irc discussion I imagined `LogfilesConfigBuilder` as opposed to `LogfileConfigBuilder` (differing only in the `s`) which would be bad, but we can use `List` instead. We do *not* need to abstract away the validated version of the config. Providing a type alias helps the derive_builder sub_builder DTRT without needing special overrides. I have split this commit so that we can drop it, if we conclude it's not wanted.
-
Ian Jackson authored
Now the network fallbacks configuration wants to Deserialize a Vec<FallbackDirBuilder>, rather than validated Vec<FallbackDir>. Methods on FallbackListBuilder are as per tpo/core/arti!462 (comment 2797697) mutatis mutandi for the fact that this struct has only fallbacks in it.
-
- Apr 20, 2022
-
-
Samanta Navarro authored
-
Samanta Navarro authored
Typos found with codespell.
-
- Apr 12, 2022
-
-
Nick Mathewson authored
Now that we have TaskSchedule, we don't need to expose these any longer.
-
- Apr 11, 2022
-
-
Nick Mathewson authored
This time, our estimator discards outliers, takes the mean of what's left, and uses the standard deviation to try to figure out how seriously to take our report of skew/not-skew. These estimates are still not actually used.
-
- Apr 07, 2022
-
-
Nick Mathewson authored
We need this since we want to report certain conditions only when they happen on a new channel, not if we observe them on a preexisting channel.
-
Nick Mathewson authored
Fortunately, we don't need a separate type here: authenticated clock skew can only come attached to a `tor_proto::Error`. We also remove skew from `tor_proto::Error::HandshakeCertsExpired`, since it would now be redundant.
-
Nick Mathewson authored
of a channel. At first I wanted to have this information not be a part of channels at all, but it is a fairly tiny amount of data, and the alternatives are pretty crufty.
-
- Apr 04, 2022
-
-
Nick Mathewson authored
Previously the code would do stuff like ``` schedule = RetrySchedule::new(INITIAL_DELAY); ``` which is needlessly verbose, since the schedule already keeps track of its initial delay.
-
Nick Mathewson authored
We were treating restrict_mut() failures as internal errors, and using internal errors to represent them. But in fact, these failures are entirely possible based on timing. Here's how it happens: * Two different circuit requests arrive at the same time, and both notice a pending circuit that they could use. * The pending circuit completes; both pending requests are notified. * The first request calls restrict_mut(), and restricts the request in such a way that the second couldn't use it. * The second request calls restrict_mut(), and gets a failure. Because of this issue, we treat these errors as transient failures and just wait for another circuit. Closes #427. (This is not a breaking API change, since `AbstractSpec` is a crate-private trait.)
-
- Apr 02, 2022
-
-
Nick Mathewson authored
-
Nick Mathewson authored
-
- Apr 01, 2022
-
-
Nick Mathewson authored
-
- Mar 30, 2022
-
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Nick Mathewson authored
This is the logical place for it, I think: the GuardMgr's job is to pick the first hop for a circuit depending on remembered status for possible first hops. Making this change will let us streamline the code that interacts with these objects.
-
eta authored
The various background daemon tasks that `arti-client` used to spawn are now handled inside their respective crates instead, with functions provided to spawn them that return `TaskHandle`s. This required introducing a new trait, `NetDirProvider`, which steals some functionality from the `DirProvider` trait to enable `tor-circmgr` to depend on it (`tor-circmgr` is a dependency of `tor-dirmgr`, so it can't depend on `DirProvider` directly). While we're at it, we also make some of the tasks wait for events from the `NetDirProvider` instead of sleeping, slightly increasing efficiency.
-
- Mar 23, 2022
-
-
Nick Mathewson authored
We now check the handshake certificates unconditionally, and only report them as _expired_ as a last resort. (Rationale: if somebody is presenting the wrong identity from a year ago, it is more interesting that they are presenting the wrong ID than it is that they are doing so with an expired cert. We also now report a different error if the certificate is expired, but its expiration is within the range of reported clock skew. (Rationale: it's helpful to distinguish this case, so that we can blame the failure on possible clock skew rather than definitely attributing it to a misbehaving relay.) Part of #405.
-
Nick Mathewson authored
NETINFO cells, which are sent in every handshake, may contain timestamps. This patch adds an accessor for the timestamp in the Netinfo messages, and teaches the tor-proto code how to compute the minimum clock skew in the code. The computation isn't terribly precise, but it doesn't need to be: Tor should work fine if your clock is accurate to within a few hours. This patch also notes a Y2038 problem in the protocol: see torspec#80. Part of #405.
-
- Mar 21, 2022
-
-
Nick Mathewson authored
This commit refactors the dirclient error type into two cases: errors when constructing a circuit, and errors that occur once we already have a one-hop circuit. The latter can usually be attributed to the specific cache we're talking to. This commit also adds a function to expose the information about which directory gave us the info.
-
Nick Mathewson authored
We already have the ability to get peer information from ChanMgr errors, and therefore from any RetryErrors that contain ChanMgr errors. This commit adds optional peer information to tor-proto errors, and a function to expose whatever peer information is available.
-
Nick Mathewson authored
It'll soon more convenient to pass in FallbackDirs as a slice of references, rather than just a slice of FallbackDirs: I'm going to be changing how we handle these in tor-dirmgr.
-
- Mar 18, 2022
-
-
- Mar 17, 2022
-
-
Nick Mathewson authored
Closes #415
-
Nick Mathewson authored
-
- Mar 16, 2022
-
-
Ian Jackson authored
-
- Mar 14, 2022
-
-
trinity-1686a authored
-
-
Nick Mathewson authored
These documents explain how to profile arti for CPU and memory, and how to simulate different kinds of breakage and misconfiguration. They aren't at all in their final form, but I figure it's useful to check them in so that more people can look at them, and make suggestions.
-
Ian Jackson authored
-
- Mar 11, 2022
-
-
Nick Mathewson authored
This should save around 1MB per consensus, since every relay has a 'protocols' lines, but there are only a few distinct possibilities for such a line. Closes #385.
-
Nick Mathewson authored
-
Nick Mathewson authored
When the version is a Tor version, we can just parse it; otherwise, we can intern it. This shrinks GenericRouterStatus and avoids a lot of extra help allocations.
-
Ian Jackson authored
-
Ian Jackson authored
-
Nick Mathewson authored
Make update_config only conditionally exported; add semver-status update.
-
- Mar 07, 2022
-
-
Ian Jackson authored
-