- 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.
-
- 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
-
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
-
Ian Jackson authored
Replace the recapitulation of TorClientConfig fields in ArtiConfig and instead just have it contain one. This is part of #374. The conversions from ArtiConfig back to ArtiConfigBuilder and TorClientConfigBuilder would need to change, but, since we don't want them anyway, No longer impl Deserialize for ArtiConfig. (As per #371 this will want to become a private type.) No longer impl From<ArtiConfig> for ArtiConfigBuilder and TorClientConfigBuilder. And abolish tests of that code. (This all has to be in one commit, because previously ArtiConfig::tor_client_config used the validated-to-builder config retcon.)
-
- Mar 04, 2022
-
-
Nick Mathewson authored
We perform this operation in a bunch of places, and most of them use hex::decode(). That's not great, since hex::decode() has to do heap allocation. This implementation uses hex::decode_to_slice(), which should be faster. (In the future we might choose to use one of the faster hex implementations, but I'm hoping that this change will be sufficient to get hex decoding out of our profiles.) Part of #377.
-
- Mar 03, 2022
-
-
Nick Mathewson authored
Previously they returned an Arc, which wasn't necessary unless the client actually _wanted_ a new Arc. This would be an API break, except that these functions are marked 'experimental-api', so semver does not apply; nonetheless I've noted the break in semver_status.md, just in case we care. Closes #369
-
- Jan 11, 2022
-
-
Nick Mathewson authored
-
- Dec 08, 2021
-
-
Nick Mathewson authored
-
- Dec 04, 2021
-
-
Nick Mathewson authored
The redundant method was a `to_owned` that probably shouldn't have been called that. It was only used in one place. The tests should get tor-linkspec's line coverage up above 90%.
-
Nick Mathewson authored
This was a relic of the old, now-unused "caret_enum!" macro. Removing it gets caret's coverage to 100%. Yes, technically this is a semver breaker on caret.
-
- Dec 02, 2021
-
-
Nick Mathewson authored
-
- Nov 30, 2021
-
-
Nick Mathewson authored
This makes sure that we're checking for a nonzero port in all cases.
-
Nick Mathewson authored
-
Nick Mathewson authored
-
Nick Mathewson authored
-
- Nov 18, 2021
-
-
Nick Mathewson authored
To do this at all neatly, I had to split out `tor-config` from `arti-config` again, and putting the lower level stuff (paths, builder errors) into tor-config. I also changed our use of derive_builder to always use a common error type, to avoid error type proliferation.
-
- Nov 12, 2021
-
-
Nick Mathewson authored
Part of #125
-