summaryrefslogtreecommitdiff
path: root/doc/semver_status.md
Commit message (Collapse)AuthorAgeFilesLines
* Implement Ord for Ed25519Identity.Nick Mathewson2022-03-301-0/+1
|
* Update semver_status from recent round of movement.Nick Mathewson2022-03-301-0/+4
|
* Move fallback.rs into guardmgr.Nick Mathewson2022-03-301-0/+8
| | | | | | | 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.
* Make daemon tasks self-contained; introduce NetDirProvidereta2022-03-301-0/+1
| | | | | | | | | | | | | | | 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.
* Merge branch 'netinfo-clock-skew' into 'main'Nick Mathewson2022-03-231-0/+11
|\ | | | | | | | | tor-proto: add the ability to learn clock skew from NETINFO cells See merge request tpo/core/arti!410
| * tor-proto: better errors when handshake fails due to untimely certsNick Mathewson2022-03-231-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * tor-proto: add a backend to detect reported clock skew.Nick Mathewson2022-03-231-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | dirclient: Collect and expose peer information from errors.Nick Mathewson2022-03-211-0/+3
| | | | | | | | | | | | | | | | | | | | 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.
* | Expose more peer information from circuit build failuresNick Mathewson2022-03-211-0/+2
| | | | | | | | | | | | | | | | | | 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.
* | circmgr: Change API for using FallbackDirsNick Mathewson2022-03-211-0/+5
| | | | | | | | | | | | 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.
* | Add semver noteIan Jackson2022-03-181-0/+1
| |
* | Define accessors for circuit hops.Nick Mathewson2022-03-171-0/+3
| | | | | | | | Closes #415
* | Update semver_status.md for isolation changesNick Mathewson2022-03-171-0/+4
| |
* | semver notes.Ian Jackson2022-03-161-0/+6
|/
* add integration test and fill semver_statustrinity-1686a2022-03-141-1/+5
|
* Merge branch 'main' into 'intern-more'Nick Mathewson2022-03-141-0/+3
|\ | | | | | | # Conflicts: # doc/semver_status.md
| * humantime_serde_option: Add note about semverIan Jackson2022-03-141-1/+5
| |
* | Canonicalize and intern protover lines on descriptorsNick Mathewson2022-03-111-3/+6
|/ | | | | | | | 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.
* Merge branch 'arti-lib' into 'main'Ian Jackson2022-03-111-0/+4
|\ | | | | | | | | arti: Move all code from binary crate to library crate See merge request tpo/core/arti!403
| * Add note about semver.Ian Jackson2022-03-111-0/+4
| |
* | Merge branch 'smaller_routerstatus' into 'main'Nick Mathewson2022-03-111-0/+2
|\ \ | |/ |/| | | | | | | | | tor-netdoc: Save allocation space in GenericRouterstatus Closes #387 See merge request tpo/core/arti!400
| * Add a missing newline.Nick Mathewson2022-03-111-1/+1
| |
| * netdoc: Make versions smaller in GenericRouterStatusNick Mathewson2022-03-111-0/+2
| | | | | | | | | | | | 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.
* | Merge branch 'config-flatten' into 'main'Ian Jackson2022-03-111-0/+5
|\ \ | |/ |/| | | | | Make ArtiConfigBuilder contain a TorClientConfigBuilder See merge request tpo/core/arti!401
| * config work: Add semver note.Ian Jackson2022-03-111-0/+5
| |
* | Follow-up from arti!318Nick Mathewson2022-03-111-0/+9
|/ | | | Make update_config only conditionally exported; add semver-status update.
* Drop remaining conversion from FooConfig to FooConfigBuilderIan Jackson2022-03-071-1/+1
|
* Have ArtiConfig contain a TorClientConfig, and drop builder retconIan Jackson2022-03-071-0/+7
| | | | | | | | | | | | | | | | | | | 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.)
* Add a from_hex method for RsaIdentity.Nick Mathewson2022-03-041-0/+4
| | | | | | | | | | | | | 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.
* arti-client: Make dirmgr() and circmgr() return &Arc<..>Nick Mathewson2022-03-031-1/+8
| | | | | | | | | | | 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
* Clear semver_status.md entries for 0.0.2Nick Mathewson2022-01-111-32/+1
|
* Update semver_status.md with recent changes.Nick Mathewson2021-12-081-0/+14
|
* tor-linkspec: Remove redundant method; add more tests.Nick Mathewson2021-12-041-0/+3
| | | | | | | 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%.
* Remove the unused "Error" type from caret.Nick Mathewson2021-12-041-0/+3
| | | | | | | 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.
* Implement Eq,PartialEq for BoundedInt32.Nick Mathewson2021-12-021-0/+3
|
* Add constructor for TorAddr, to enforce port != 0Nick Mathewson2021-11-301-0/+3
| | | | This makes sure that we're checking for a nonzero port in all cases.
* Add comments about the absence of tap_key in microdesc.Nick Mathewson2021-11-301-0/+3
|
* Note non-breaking API change in tor-proto.Nick Mathewson2021-11-301-0/+2
|
* Clear semver_status log now that 0.0.2 is out.Nick Mathewson2021-11-301-13/+1
|
* Move top-level configuration downwards from `arti` to `arti-config`.Nick Mathewson2021-11-181-1/+5
| | | | | | | | 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.
* tor-dirclient: Put routerdesc download behind a feature.Nick Mathewson2021-11-121-1/+1
| | | | Part of #125
* tor-dirmgr: put routerdesc storage behind a feature.Nick Mathewson2021-11-121-0/+1
| | | | | | | (We keep routerdescs in the schema, since we don't want _that_ to fragment.) Part of #125.
* tor-netdoc: Put the "routerdesc" document type behind a feature.Nick Mathewson2021-11-121-0/+1
| | | | | | | | | | Nothing in arti currently uses this document type. Eventually it will be useful for relays and for bridge clients. I've left the "SHA1 digest of a router descriptor" type available unconditinoally, however, since it does get used in a few places. Part of #125.
* tor-llcrypto: Put currently unused functions behind features.Nick Mathewson2021-11-121-2/+3
| | | | | | | | We don't currently need a couple of the key manipulation features that we have, since we aren't yet doing relays or onion service clients. Part of #125
* Add a file to track per-crate semver status.Nick Mathewson2021-11-111-0/+25