summaryrefslogtreecommitdiff
path: root/doc
Commit message (Collapse)AuthorAgeFilesLines
...
| * Update tor-dirmgr to use fs-mistrust.Nick Mathewson2022-05-091-0/+1
| |
| * tor-persist: Use fs-mistrust to verify state file permissions.Nick Mathewson2022-05-091-0/+4
| |
* | Clear semver_status now that 0.3.0 is coming out.Nick Mathewson2022-05-061-72/+1
|/
* semver notes: Fix a missing parenIan Jackson2022-05-051-1/+1
|
* semver note about serde attribute changesIan Jackson2022-05-051-0/+2
|
* Merge branch 'socket-addr-list-builder' into 'main'Ian Jackson2022-05-041-1/+3
|\ | | | | | | | | FallbackDir: orports: Introduce and use VecBuilder See merge request tpo/core/arti!474
| * FallbackDir: Use VecBuilder for orportsIan Jackson2022-05-041-0/+1
| | | | | | | | | | | | | | And drop the ad-hoc orport() method. This brings FallbackDir's orports field in line with our list builder API. The general semver note in "configuation" seems to cover most of this.
| * list_builder: Update semver noteIan Jackson2022-05-041-1/+2
| |
* | GuardUsage: restrictions Add semver noteIan Jackson2022-05-041-0/+1
|/
* Fix spacingSamanta Navarro2022-04-271-4/+4
|
* Fix grammar and typosSamanta Navarro2022-04-273-3/+3
|
* Merge branch 'upgrade_dependencies' into 'main'eta2022-04-271-0/+4
|\ | | | | | | | | | | | | Upgrade various dependencies, now that we are MSRV 1.56 Closes #313 and #334 See merge request tpo/core/arti!476
| * Upgrade to AES 0.8Nick Mathewson2022-04-261-0/+4
| | | | | | | | | | | | | | | | Now that we require Rust 1.56, we can upgrade to AES 0.8. This forces us to have some slight API changes. We require cipher 0.4.1, not cipher 0.4.0, since 0.4.0 has compatibility issues with Rust 1.56.
* | Merge branch 'download-schedule' into 'main'Nick Mathewson2022-04-261-0/+6
|\ \ | |/ |/| | | | | DownloadSchedule: Introduce Builder See merge request tpo/core/arti!473
| * DirMgrConfig: Rename two fields that contained a _configIan Jackson2022-04-261-0/+1
| | | | | | | | This entire struct is config. This is otiose.
| * 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
| |