<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-dirmgr/src/lib.rs, branch arti-v0.3.0</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v0.3.0</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v0.3.0'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2022-05-04T12:50:12Z</updated>
<entry>
<title>tor-dirmgr: make DownloadScheduleBuilder public</title>
<updated>2022-05-04T12:50:12Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2022-05-04T11:00:24Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9214eb5db2b73abd4417d6a5261a39c32758abd5'/>
<id>urn:sha1:9214eb5db2b73abd4417d6a5261a39c32758abd5</id>
<content type='text'>
This type was returned by the public DownloadSchedule::builder
function.  But the only thing that seems to have noticed that the type
name itself wasn't exported, was rustdoc.  Hmmm.
</content>
</entry>
<entry>
<title>Change builder list API</title>
<updated>2022-05-04T12:50:10Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2022-05-04T12:32:35Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=4bca91271558d950092fb1ac51c1316655d293cb'/>
<id>urn:sha1:4bca91271558d950092fb1ac51c1316655d293cb</id>
<content type='text'>
The new API is (roughly) as discussed in
  https://gitlab.torproject.org/tpo/core/arti/-/issues/451

This is quite a large commit and it is not convenient to split it up.
It contains the following changes:

 * Redo the list builder and accessor macros implemnetation,
   including docs and tests.

 * Change uses of define_list_config_builder.  In each case:
   - Move the docs about the default value to the containing field.
   - Remove the other docs (which were just recapitulations, and
     are now not needed since the ListBuilder is no longer public).
   - Rewmove or replace `pub` in the define_list_builder_helper call,
     so that the builder is no longer public.
   - Change the main macro call site to use define_list_builder_helper.
   - Add a call to define_list_builder_accessors.

 * Make the module `list_builder` pub so that we have somewhere to
   put the overview documentation.

 * Consequential changes:
   - Change `outer.inner().replace(X)` to `outer.set_inner(X)`
   - Consequential changes to imports (`use` statements).
</content>
</entry>
<entry>
<title>DirMgrConfig: Remove unnecessary accessors</title>
<updated>2022-04-26T14:32:20Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2022-04-26T14:26:06Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=72eaa9fc30e00137e1ddfaa0ab99731d8a6ae705'/>
<id>urn:sha1:72eaa9fc30e00137e1ddfaa0ab99731d8a6ae705</id>
<content type='text'>
These fields are pub.

Retain two convenience accessor functions that access sub-fields of
network.
</content>
</entry>
<entry>
<title>DownloadSchedule: Abolish accessors in DownloadScheduleConfig</title>
<updated>2022-04-26T14:16:32Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2022-04-26T14:09:54Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=cb303cefb3a87ba657f527cc721195940e79b21b'/>
<id>urn:sha1:cb303cefb3a87ba657f527cc721195940e79b21b</id>
<content type='text'>
We can just make the fields pub(crate).
</content>
</entry>
<entry>
<title>Introduce AuthorityListBuilder in NetworkConfigBuilder</title>
<updated>2022-04-25T11:54:51Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2022-04-25T11:29:46Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=4ad9e5e4b0a8fa9761e65240f698ad8e2ee821cb'/>
<id>urn:sha1:4ad9e5e4b0a8fa9761e65240f698ad8e2ee821cb</id>
<content type='text'>
NetworkConfigBuilder needs to not contain any validated structs, so
that its serde does not expose the validated details.

AuthorityListBuilder is what ought to go here - and it contains
Vec&lt;AuthorityBuilder&gt;, not Vec&lt;Authority&gt;.  As a consequence, many
places now deal with AuthorityBuilder, rather than Authority.
</content>
</entry>
<entry>
<title>Refactor FirstHopId into type-differentiated form</title>
<updated>2022-03-30T14:41:39Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-29T14:55:20Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6282df34fb00c3b8b686553e05f8d3172b017ed0'/>
<id>urn:sha1:6282df34fb00c3b8b686553e05f8d3172b017ed0</id>
<content type='text'>
The FirstHopId type now records an enum that stores whether the hop
is a guard or a fallback.  This change addresses concerns about
remembering to check the type or source of an Id before passing it
down to the FallbackState or GuardSet.

Making this change required an API change, so that dirmgr can
report success/failure status without actually knowing whether it's
using a fallback or a guard.
</content>
</entry>
<entry>
<title>Rename Guard=&gt;FirstHop, GuardId=&gt;FirstHopId</title>
<updated>2022-03-30T14:40:59Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-29T13:05:39Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=13af6134f6180f7241daca9206fa49ed5f26829d'/>
<id>urn:sha1:13af6134f6180f7241daca9206fa49ed5f26829d</id>
<content type='text'>
This is preparation for having separate GuardId and FirstHopId types
that distinguish which back-end they index.
</content>
</entry>
<entry>
<title>Rename ExternalFailure =&gt; ExternalActivity.</title>
<updated>2022-03-30T14:40:12Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-26T00:32:52Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=bdd129f23094b58b738c87d4655783004fac2274'/>
<id>urn:sha1:bdd129f23094b58b738c87d4655783004fac2274</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add status tracking to FallbackDir.</title>
<updated>2022-03-30T14:39:09Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-25T23:19:57Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=bfb2353a8f627b189e104e606b3284fdfaa6d98b'/>
<id>urn:sha1:bfb2353a8f627b189e104e606b3284fdfaa6d98b</id>
<content type='text'>
We do this by creating a new FallbackSet type that includes status
information, and updating the GuardMgr APIs to record success and
failure about it when appropriate.  We can use this to mark
FallbackDirs retriable (or not).

With this change, FallbackDir is now stored internally as a Guard in
the GuardMgr crate.  That's fine: the FallbackDir type really only
matters for configuration.
</content>
</entry>
<entry>
<title>Move fallback.rs into guardmgr.</title>
<updated>2022-03-30T14:34:48Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-25T17:38:01Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=80b65c3a4d4108c6b4b0cb91722f89c8e5859b7d'/>
<id>urn:sha1:80b65c3a4d4108c6b4b0cb91722f89c8e5859b7d</id>
<content type='text'>
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.
</content>
</entry>
</feed>
