<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-chanmgr/src/err.rs, branch arti-v1.0.0</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.0.0</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.0.0'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2022-08-10T14:39:37Z</updated>
<entry>
<title>Final (?) API revisions for tor-linkspec</title>
<updated>2022-08-10T14:39:37Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-08-05T15:47:05Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=2d4507ff35f8e8cf874c81d3754804b2c20f31aa'/>
<id>urn:sha1:2d4507ff35f8e8cf874c81d3754804b2c20f31aa</id>
<content type='text'>
With this change, each individual identity type becomes optional.
The functions that expose them unconditionally are now in a "legacy"
trait that only some downstream types are expected to implement.

There are new convenience APIs in HasRelayIds:
  * to return Option&lt;&amp;keytype&gt;,
  * to see if one identity-set contains another.

This commit will break several downstream crates!  For the
reviewer's convenience, I will put the fixes for those crates into a
series of squash! commits on this one.

tor-netdir
----------

Revise tor-netdir to accept optional identities.  This required some
caveats and workarounds about the cases where we have to deal with a
key type that the tor-netdir code does not currently recognize at
all.  If we start to add more identity types in the future, we may
well want more internal indices in this code.

tor-proto
---------

In order to make tor-proto support optional identities, there were
fewer changes than I thought.  Some "check" functions needed to start
looking at "all the ids we want" rather than at "the two known IDs";
they also needed to accommodate that case where we don't have an ID
that we demand.

This change will also help with bridges, since we want to be able to
connect to a bridge without knowing all of its IDs up front.

The protocol currently _requires_ the two current ID types in some
places. To deal with that, I added a new `MissingId` error.

I also removed a couple of unconditional identity accessors for
chanmgr; code should use `target().identity(...)` instead.

tor-chanmgr
-----------

This is an incomplete conversion: it does not at all handle channel
targets without Ed25519 identities yet.  It still uses those
identities to index its internal map from identity to channel; but
it gives a new `MissingId` error type if it's given a channel target
that doesn't have one.

We'll want to revise the map type again down the road when we
implement bridges, but I'd rather not step on the channel-padding
work in progress right now.

tor-guardmgr
------------

This change is mostly a matter of constructing owned identity types
more sensibly, rather than unwrapping them directly.

There are some places marked with TODOs where we still depend on
particular identity types, because of how the directory protocol
works.  This will need revisiting when we add bridge support here.

tor-circmgr
-----------

These changes are just relatively simple API changes in the tests.
</content>
</entry>
<entry>
<title>ChanMgr: Add more contextual info to error types.</title>
<updated>2022-07-06T15:51:28Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-07-05T15:37:29Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=bc9db9b84cc11861b9d7f1ffa7def24e6abca8af'/>
<id>urn:sha1:bc9db9b84cc11861b9d7f1ffa7def24e6abca8af</id>
<content type='text'>
Now each type has a peer.  In some cases this peer is just an
address, whereas in others (where key is relevant or address isn't
yet narrowed down) it's a full OwnedChanTarget.
</content>
</entry>
<entry>
<title>Do not include error source() in display() format.</title>
<updated>2022-06-21T18:14:14Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-06-21T18:14:14Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=08d9bbf33b9fff8aa33a823422aa4e323137be07'/>
<id>urn:sha1:08d9bbf33b9fff8aa33a823422aa4e323137be07</id>
<content type='text'>
According to doc/Errors.md, and in keeping with current best
practices, we should not include display an error's `source()` as
part of that error's display method.  Instead, we should let the
caller decide to call source() and display that error in turn.

Part of #323.
</content>
</entry>
<entry>
<title>chanmgr: bubble ClockSkew up through the Error object.</title>
<updated>2022-04-07T14:15:28Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-04-07T14:01:19Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9160b55c57e9b2d68b82059139a2be0dd7954b8a'/>
<id>urn:sha1:9160b55c57e9b2d68b82059139a2be0dd7954b8a</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>chanmgr: implement HasRetryTime.</title>
<updated>2022-04-04T15:15:18Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-03-31T19:38:48Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=936439858bf70efb509cc228a970cdb383d1a569'/>
<id>urn:sha1:936439858bf70efb509cc228a970cdb383d1a569</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement a basic form of RFC 8305 ("happy eyeballs") for channels</title>
<updated>2022-03-07T14:56:51Z</updated>
<author>
<name>eta</name>
<email>tor@eta.st</email>
</author>
<published>2022-03-04T15:58:21Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c98d9dc5fec3da18b4d7098078c273a3a1558e45'/>
<id>urn:sha1:c98d9dc5fec3da18b4d7098078c273a3a1558e45</id>
<content type='text'>
This makes Arti usable in IPv6-only environments (arti#92) by letting us
attempt multiple connections to a given relay using all of its
addresses instead of just using the first (probably IPv4) one, using the
strategy from RFC 8305 § 5.

This isn't a complete implementation of Happy Eyeballs; ideally, we'd
sort the address list before doing concurrent connections. However, it
works (and has been tested inside an IPv6-only container inside eta's
network :p)
</content>
</entry>
<entry>
<title>tor-proto: Split IoErr  based on when it occurs</title>
<updated>2022-02-23T15:38:48Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-02-23T15:01:28Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=afa49eac8f45ea34a419e7a8cef7bb03026b5c75'/>
<id>urn:sha1:afa49eac8f45ea34a419e7a8cef7bb03026b5c75</id>
<content type='text'>
We want to distinguish handshake failures from errors later on in
the channel's lifetime.

Closes #359.
</content>
</entry>
<entry>
<title>Rename TorConnectionFailed to TorAccessFailed</title>
<updated>2022-02-22T20:38:13Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-02-22T20:38:13Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=7d4a57d5fa1a500f074835ecb0d8b204bc99d012'/>
<id>urn:sha1:7d4a57d5fa1a500f074835ecb0d8b204bc99d012</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-chanmgr: use Bug types.</title>
<updated>2022-02-16T16:55:47Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-02-15T19:19:03Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=caa70fde35b6a973ae2b29bf4760c5e019c14911'/>
<id>urn:sha1:caa70fde35b6a973ae2b29bf4760c5e019c14911</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement HasKind for tor-chanmgr::Error</title>
<updated>2022-02-16T16:55:47Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2022-02-15T19:11:14Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=10bca35bbaf7ace3334e4027510e470a89df19d3'/>
<id>urn:sha1:10bca35bbaf7ace3334e4027510e470a89df19d3</id>
<content type='text'>
(There will be a folowup to work on internal errors here.)
</content>
</entry>
</feed>
