summaryrefslogtreecommitdiff
path: root/doc
Commit message (Collapse)AuthorAgeFilesLines
...
| * Document breaking changes to DownloadSchedule etc.Ian Jackson2022-04-261-0/+5
| |
* | Merge branch 'main' into 'msrv_1_56'Nick Mathewson2022-04-261-0/+9
|\| | | | | | | | | | | # Conflicts: # crates/tor-config/Cargo.toml # crates/tor-dirmgr/src/state.rs # doc/semver_status.md
| * Add semver note about added macros in tor-condfigIan Jackson2022-04-251-0/+4
| |
| * Add semver notes for AuthorityListBuilder, PredictedPortsListBuilderIan Jackson2022-04-251-0/+2
| | | | | | | | These were omitted in the earlier commits.
| * Fix error return type of AuthorityBuilderIan Jackson2022-04-251-0/+4
| |
* | Update semver_status to note that all crates have had a breaking change.Nick Mathewson2022-04-251-0/+5
|/
* logfiles: Introduce LogfileListConfigBuilderIan Jackson2022-04-221-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | In https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/462#note_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.
* fallback list: Introduce and use FallbackListBuilderIan Jackson2022-04-221-0/+4
| | | | | | | | | Now the network fallbacks configuration wants to Deserialize a Vec<FallbackDirBuilder>, rather than validated Vec<FallbackDir>. Methods on FallbackListBuilder are as per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/462#note_2797697 mutatis mutandi for the fact that this struct has only fallbacks in it.
* Fix wording in FAQSamanta Navarro2022-04-201-2/+2
|
* Fix typosSamanta Navarro2022-04-201-1/+1
| | | | Typos found with codespell.
* circmgr: Remove now-unused scheduled entry points.Nick Mathewson2022-04-121-0/+1
| | | | | Now that we have TaskSchedule, we don't need to expose these any longer.
* Implement a better clock skew estimator.Nick Mathewson2022-04-111-0/+6
| | | | | | | | 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.
* ChanMgr: Return provenance information from get_or_launchNick Mathewson2022-04-071-0/+1
| | | | | | 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.
* chanmgr: bubble ClockSkew up through the Error object.Nick Mathewson2022-04-071-0/+5
| | | | | | | | 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.
* Channel: Expose our view of whether the clock is skewed, and the ageNick Mathewson2022-04-071-0/+4
| | | | | | | | 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.
* Merge branch 'main' into 'separate_dir_status'Nick Mathewson2022-04-061-2/+6
|\ | | | | | | # Conflicts: # doc/semver_status.md
| * Merge branch 'main' into 'retriable'Nick Mathewson2022-04-051-0/+8
| |\ | | | | | | | | | # Conflicts: # doc/semver_status.md
| * | circmgr: Avoid a race condition in circuit usage restrictionNick Mathewson2022-04-041-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.)
* | | Add RetrySchedule::reset()Nick Mathewson2022-04-041-1/+4
| |/ |/| | | | | | | | | | | | | | | | | | | 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.
* | rtmock: add the ability to make a connection time out.Nick Mathewson2022-04-021-0/+5
| |
* | socksproto: remove some unused accessors.Nick Mathewson2022-04-021-0/+3
|/
* Clean out semver_status.mdNick Mathewson2022-04-011-98/+1
|
* 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 'testing-docs' into 'main'Nick Mathewson2022-03-142-0/+344
|\ | | | | | | | | New documents to checkpoint my work on #329 and #87 See merge request tpo/core/arti!407
| * Apply 1 suggestion(s) to 1 file(s)eta2022-03-141-1/+1
| |
| * New documents to checkpoint my work on #329 and #87Nick Mathewson2022-03-142-0/+344
| | | | | | | | | | | | | | | | | | 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.
* | 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
| |