<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-circmgr/src/lib.rs, branch arti-v0.2.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.2.0</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v0.2.0'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2022-03-30T14:41:57Z</updated>
<entry>
<title>Run cargo fmt one more time for good measure.</title>
<updated>2022-03-30T14:41:57Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-30T14:41:57Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=2bb3ba7886571153a46dc6d5de4a6e6876863957'/>
<id>urn:sha1:2bb3ba7886571153a46dc6d5de4a6e6876863957</id>
<content type='text'>
</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>Replace the fallback directories when they change in the config.</title>
<updated>2022-03-30T14:39:09Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-26T00:28:05Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d88e9d676e8204078152fccc7f9ef893e136ac03'/>
<id>urn:sha1:d88e9d676e8204078152fccc7f9ef893e136ac03</id>
<content type='text'>
The code here uses a new iterator type, since I couldn't find one of
these on crates.io.  I tried writing the code without it, but it was
harder to follow and test.
</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>circmgr: Use guard-manager's view of the fallbacks when possible.</title>
<updated>2022-03-30T14:39:09Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-25T20:56:26Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=ed6389acc7c872854984ae1ea38dbda6542f48cb'/>
<id>urn:sha1:ed6389acc7c872854984ae1ea38dbda6542f48cb</id>
<content type='text'>
If we're building a path with the guard manager involved, we now ask
the guard manager to pick our first hop no matter what.  We only
pick from the fallback list ourselves if we're using the API with no
guard manager.

This causes some follow-on changes where we have to remember an
OwnedChanTarget object in a TorPath we've built, and where we gain
the ability to say we're building a path "from nothing extra at
all."  Those are all internal to the crate, though.

Closes #220, by making sure that we use our guards to get a fresh
netdir (if we can) before falling back to any fallbacks, even if our
consensus is old.

Compilation should be fixed in the next commit.
</content>
</entry>
<entry>
<title>Turn FallbackList into a real type, and store one in GuardMgr.</title>
<updated>2022-03-30T14:39:06Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-25T20:44:12Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9da43189f36b19681d10b78ef982c52c929b4573'/>
<id>urn:sha1:9da43189f36b19681d10b78ef982c52c929b4573</id>
<content type='text'>
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.
</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>
<entry>
<title>Make daemon tasks self-contained; introduce NetDirProvider</title>
<updated>2022-03-30T13:26:43Z</updated>
<author>
<name>eta</name>
<email>tor@eta.st</email>
</author>
<published>2022-03-28T12:54:36Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=ac64bdea2744c6cd0ede0562954efcfe479afd94'/>
<id>urn:sha1:ac64bdea2744c6cd0ede0562954efcfe479afd94</id>
<content type='text'>
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.
</content>
</entry>
</feed>
