summaryrefslogtreecommitdiff
path: root/crates/arti-client
Commit message (Collapse)AuthorAgeFilesLines
* Bump all arti*, tor* crates to 0.2.0Nick Mathewson2022-04-011-13/+13
| | | | | | | | Not all of these strictly need to be bumped to 0.2.0; many could go to 0.1.1 instead. But since everything at the tor-rtcompat and higher layers has had breaking API changes, it seems not so useful to distinguish. (It seems unlikely that anybody at this stage is depending on e.g. tor-protover but not arti-client.)
* Reformat several Cargo.toml files with 100-char-wide lines.Nick Mathewson2022-03-301-7/+2
|
* Turn FallbackList into a real type, and store one in GuardMgr.Nick Mathewson2022-03-302-0/+7
| | | | | | | | | | | | | | The guard manager is responsible for handing out the first hops of tor circuits, keeping track of their successes and failures, and remembering their states. Given that, it makes sense to store this information here. It is not yet used; I'll be fixing that in upcoming commits. Arguably, this information no longer belongs in the directory manager: I've added a todo about moving it. This commit will break compilation on its own in a couple of places; subsequent commits will fix it up.
* Merge branch 'disallowed_lint' into 'main'eta2022-03-301-5/+1
|\ | | | | | | | | Remove allow(clippy::disallowed_methods) lint flag. See merge request tpo/core/arti!437
| * Fix a let_and_return lint violation that had somehow slipped in.Nick Mathewson2022-03-301-3/+1
| |
| * Remove allow(clippy::disallowed_methods) lint.Nick Mathewson2022-03-301-2/+0
| |
* | Make daemon tasks self-contained; introduce NetDirProvidereta2022-03-302-261/+19
|/ | | | | | | | | | | | | | | 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 'no-system-time' into 'main'eta2022-03-301-1/+5
|\ | | | | | | | | | | | | Don't use SystemTime::now() Closes #306 See merge request tpo/core/arti!365
| * remove most usage of SystemTime::nowtrinity-1686a2022-02-251-1/+5
| |
* | Update README.md files using readmes scriptNick Mathewson2022-03-291-0/+2
| |
* | Merge branch 'isolation-followup' into 'main'Nick Mathewson2022-03-281-12/+12
|\ \ | | | | | | | | | | | | implement IsolationHelper for StreamIsolation See merge request tpo/core/arti!434
| * | remove usage of 'token' where it's no longer a tokentrinity-1686a2022-03-271-3/+3
| | |
| * | move StreamIsolation to isolation moduletrinity-1686a2022-03-241-1/+1
| | |
| * | rename *_isolation_group to *_isolationtrinity-1686a2022-03-241-8/+8
| | |
* | | Merge branch 'main' into 'main'Ian Jackson2022-03-251-2/+0
|\ \ \ | | | | | | | | | | | | | | | | Fixed typo on arti-client README.md See merge request tpo/core/arti!432
| * | | Fixed typo on arti-client README.mdsolanav2022-03-241-2/+0
| |/ /
* | | Merge branch 'dir-filter' into 'main'Ian Jackson2022-03-254-26/+74
|\ \ \ | | | | | | | | | | | | | | | | arti-client, dirmgr: Initial DirFilter code See merge request tpo/core/arti!431
| * | | Abolish filter::DynFilter in favour of transparent DirFilterIan Jackson2022-03-251-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two reasons why the DynFilter newtype might be needed: 1. To impl Default. But we don't need it to impl Default since we can have an accessor which does the defaulting. 2. To hide the API. But this is usrely an unstable API. Just writing Arc<dyn> gets rid of a lot of unnecessary boilerplate and conversion code.
| * | | Make DirFilter be Debug + Send + SyncIan Jackson2022-03-251-1/+1
| | | | | | | | | | | | | | | | | | | | Abolish the handwritten Debug impl for DynFilter, which is no longer needed.
| * | | Expose DirFilter from arti-client.Nick Mathewson2022-03-243-1/+36
| | | | | | | | | | | | | | | | | | | | This will make it possible to implement a directory-munging mechanism in arti-testing for #397.
| * | | dirmgr: Initial DirFilter code.Nick Mathewson2022-03-241-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | This code sits behind a feature flag, and can be used to modify directories before storing them. This is part of the implementation for #397.
| * | | Reformat {arti-client,tor-dirmgr}/Cargo.tomlNick Mathewson2022-03-241-25/+37
| |/ /
* | | Merge branch 'task-scheduler-2' into 'main'eta2022-03-253-36/+113
|\ \ \ | |/ / |/| | | | | | | | Implement a periodic task scheduler, and a basic dormant mode See merge request tpo/core/arti!429
| * | Implement a periodic task scheduler, and a basic dormant modeeta2022-03-233-36/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a revised version of !397; it implements a scheduling system for periodic tasks that can be externally controlled, and then uses the external control aspect to implement a basic dormant mode (#90). More technically, the scheduling system consists of a `Stream` that periodic tasks are expected to embed in a `while` loop or similar, a way for tasks themselves to choose how long to wait until the stream next yields a result, and a handle to control this outside of the task.
* | | Move SystemConfig to arti::cfgIan Jackson2022-03-211-48/+0
|/ / | | | | | | Fixes #314, #418.
* | Alternative API for set_isolation_group().Nick Mathewson2022-03-171-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | Instead of requiring a `Box<dyn Isolation>`, it now takes either a `Box<dyn Isolation>`, or an arbitrary `T` that implements `Isolation`. This API still allows the user to pass in a `Box<dyn Isolation>` if that's what they have, but it doesn't require them to Box the isolation on their own. Part of #414.
* | Merge branch 'test-isolation' into 'main'Nick Mathewson2022-03-172-17/+19
|\ \ | | | | | | | | | | | | new api for isolation See merge request tpo/core/arti!377
| * | replace TODOs with documentationtrinity-1686a2022-03-161-2/+1
| | |
| * | accept boxed isolation in StreamPref::set_isolation_grouptrinity-1686a2022-03-161-2/+2
| | |
| * | add tests on Isolation and fix conditional compilation issuestrinity-1686a2022-03-161-1/+0
| | | | | | | | | | | | | | | | | | it seems I added conditional compilation without noticing it?? and there was some errors when choosing a prefered runtime depending on feature flags
| * | replace IsolationMap with new Isolation traittrinity-1686a2022-03-161-0/+1
| | |
| * | replace Arc with Box and use dyn-clonetrinity-1686a2022-03-161-52/+37
| | | | | | | | | | | | this also removes JoinResult
| * | replace result with eithertrinity-1686a2022-03-161-5/+6
| | |
| * | testing new api for isolationTrinity Pointard2022-03-161-36/+53
| | |
* | | Merge branch 'config-partials-transparent' into 'main'Ian Jackson2022-03-173-34/+38
|\ \ \ | |/ / |/| | | | | | | | Absolish builders for CircMgrConfig and DirMgrConfig See merge request tpo/core/arti!417
| * | DirMgrConfig: abolish builder; make it transparent and exhaustiveIan Jackson2022-03-162-15/+18
| | | | | | | | | | | | See rationale in the comment.
| * | Make CircMgrConfig transparent (and make it a trait)Ian Jackson2022-03-162-19/+14
| | | | | | | | | | | | See commentary for the rationale.
| * | Change type of TorClientConfig::override_net_paramsIan Jackson2022-03-162-3/+8
| | | | | | | | | | | | | | | | | | | | | Now we use NetParams. That implies making its constructor public, which I think it fine. This is related to #413 but is far from completing that ticket.
| * | Actually honour preemptive circuits configurationIan Jackson2022-03-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This handwritten conversion function omitted a field. There was nothing to spot this mistake. IMO this shows why these particular types ought not to use builders, but instead, should cause API breaks when things change. Adding this line here to explicitly fix the bug, although we are about to abolish this function completely almost right away.
* | | derive_builder: Switch to upstream 0.11Ian Jackson2022-03-162-4/+4
|/ / | | | | | | | | | | | | | | | | This has the different syntax for builder field attributes than what I originally proposed in my MR, and which therefore is in the pinned branch. My upstream MR for the field attributes feature was morged: https://github.com/colin-kiegel/rust-derive-builder/issues/239
* | actually add DNS supporttrinity-1686a2022-03-141-1/+1
| |
* | add udp to runtimetrinity-1686a2022-03-141-1/+1
| |
* | Use new upstream humantime_serde_option featureIan Jackson2022-03-141-4/+3
| | | | | | | | Replace all uses of our copy of this code.
* | humantime: Update to humantime-serde 1.1.1Ian Jackson2022-03-141-1/+1
| | | | | | | | | | | | | | | | This has the humantime_serde::option module, which we have upstreamed and are about to switch to. The remaining dependency with version = "1" is going to be removed in a moment.
* | rustfmtIan Jackson2022-03-111-2/+1
| |
* | Make TorClientConfigBuilder DeserializeIan Jackson2022-03-111-0/+11
| | | | | | | | As per #371
* | Drop remaining conversion from FooConfig to FooConfigBuilderIan Jackson2022-03-071-66/+0
| |
* | Have ArtiConfig contain a TorClientConfig, and drop builder retconIan Jackson2022-03-071-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.)
* | Derive Deserialize for derive-builder-generated config buildersIan Jackson2022-03-071-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | I used git-grep -P '\#\[serde\((?!default|deny_unknown)' to find places where I needed to add additional attributes on the builder method fields. This is currently a bit duplicative, but when #371 is completely done, the validated (non-builder) configs won't need to be Deserialize any more. This is part of #371 and #372.
* | Use git source for derive_builder for now, for attrs featureIan Jackson2022-03-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We are going to want to specify custom attributes on fields of the builder struct. This feature was missing from derive_builder. This commitid is the current head of my MR branch https://github.com/colin-kiegel/rust-derive-builder/pull/237 https://github.com/ijackson/rust-derive-builder/tree/builder-field-attrs Using the commitid prevents surprises if that branch is updated. We will require this newer version of derive_builder. The version will need to be bumped again later, assuming the upstream MR is merged and upstream do a release containing the needed changes.