<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-circmgr/src/mgr.rs, branch tor-dirmgr-v0.5.1</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=tor-dirmgr-v0.5.1</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=tor-dirmgr-v0.5.1'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2022-06-13T13:26:32Z</updated>
<entry>
<title>tor-netdir: testnet: Make construct_netdir infallible (rustfmt)</title>
<updated>2022-06-13T13:26:32Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2022-06-13T13:26:32Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=3e035927f20e88fa01f3b82649daa08551c4fda6'/>
<id>urn:sha1:3e035927f20e88fa01f3b82649daa08551c4fda6</id>
<content type='text'>
Run rustfmt.  Separate commit to make review of the substantive commit
easier.
</content>
</entry>
<entry>
<title>tor-netdir: testnet: Make construct_netdir infallible</title>
<updated>2022-06-13T13:25:45Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2022-06-13T13:25:45Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=7d223ac9e6c6d998d51a2d66baaeddea086dca37'/>
<id>urn:sha1:7d223ac9e6c6d998d51a2d66baaeddea086dca37</id>
<content type='text'>
This is a *lot* of unwraps.  The function takes no parameters and
is used only for testing.  It ought to be infallible.
</content>
</entry>
<entry>
<title>Resolve the new `derive_partial_eq_without_eq` lint.</title>
<updated>2022-05-23T16:55:37Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-05-23T16:32:31Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=546ae3000eb179aedc97de30b0ccdb1d45b93395'/>
<id>urn:sha1:546ae3000eb179aedc97de30b0ccdb1d45b93395</id>
<content type='text'>
It's a little overzealous sometimes, but it's mostly to the good.
</content>
</entry>
<entry>
<title>squash! Bump every crate's edition to 2021.</title>
<updated>2022-04-25T17:06:26Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-04-25T16:40:33Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=2f6bc6bdc431fa36de70a167eea777dcf3f60bf2'/>
<id>urn:sha1:2f6bc6bdc431fa36de70a167eea777dcf3f60bf2</id>
<content type='text'>
Remove all `use` statements for `TryFrom` and `TryInto`.  These are
now redundant in Rust 2021.
</content>
</entry>
<entry>
<title>circmgr: Report CircProvenance from AbstractCircMgr.</title>
<updated>2022-04-12T12:41:32Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-04-12T12:41:32Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=3d5276a9cc6030751f9b4ff541c4055a4e66f75c'/>
<id>urn:sha1:3d5276a9cc6030751f9b4ff541c4055a4e66f75c</id>
<content type='text'>
This feature is similar to ChanProvenance from ChanMgr, except that
we don't yet need to report it outside the crate.  I'm going to use
it to distinguish newly created circuits from existing circuits in
the preemptive circuit builder.
</content>
</entry>
<entry>
<title>Distinguish UsageMismatch cases by whether a race is possible</title>
<updated>2022-04-04T15:41:00Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-04-04T15:41:00Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=36440a957c762f2dfe43569a0545cbbda7f738a9'/>
<id>urn:sha1:36440a957c762f2dfe43569a0545cbbda7f738a9</id>
<content type='text'>
This lets us say that the UsageMismatch cases in some parts of the
code reflect a programming error (RetryTime::Never), whereas in
other case it reflects another circuit request getting to the
circuit first (RetryTime::Immediate).
</content>
</entry>
<entry>
<title>circmgr: Improve retry-and-or-delay logic.</title>
<updated>2022-04-04T15:15:18Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-31T19:41:38Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6d8a6b42e7cc9737c3a93ff6a23aaaea11e45fbe'/>
<id>urn:sha1:6d8a6b42e7cc9737c3a93ff6a23aaaea11e45fbe</id>
<content type='text'>
Use the new RetryTime type and its associates to decide how long to
wait (if at all) between attempts to build a circuit.

Closes #421.

Part of #329.
</content>
</entry>
<entry>
<title>circmgr: Improve reporting of error origins.</title>
<updated>2022-04-04T15:15:18Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-31T19:17:02Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=f7810d42eb953bf57d9d777fc823087211350452'/>
<id>urn:sha1:f7810d42eb953bf57d9d777fc823087211350452</id>
<content type='text'>
Previously we did not distinguish errors that came from pending
circuits from errors that came from the circuits we were
building.  We also reported errors as coming from "Left" or "Right",
instead of a more reasonable description.
</content>
</entry>
<entry>
<title>circmgr: Avoid a race condition in circuit usage restriction</title>
<updated>2022-04-04T15:14:52Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-31T18:51:02Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=86c59dd1f337919023779ad92bb08ca79e876158'/>
<id>urn:sha1:86c59dd1f337919023779ad92bb08ca79e876158</id>
<content type='text'>
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.)
</content>
</entry>
<entry>
<title>circmgr: limit circuit attempts when launch_parallelism &gt; 1.</title>
<updated>2022-03-30T18:14:52Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-30T18:14:52Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=bd798764a47332393fd6b036093dba9c73770d79'/>
<id>urn:sha1:bd798764a47332393fd6b036093dba9c73770d79</id>
<content type='text'>
Previously, if we had launch_parallelism &gt; 1, and we were willing to
retry building a circuit max_retries times, then we'd launch up to
max_retries * launch_parallelism circuits before giving up.  Ouch!

With this patch, we try to keep the total number of circuits
planned and attempted to the actual max_retries limit.

Part of #329; found with arti-testing.
</content>
</entry>
</feed>
