| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
| |
Part of #1115
|
| |
|
|
|
|
| |
The offending `ArtiPath` should be included in the error.
Part of #1115
|
| |
|
|
|
|
|
|
|
| |
Originally, these functions converted to and from `ArtiPathComponent`.
In !1931, we replaced `ArtiPathComponent` with `Slug` without renaming
the conversion functions. Since we're converting to and from `Slug` now,
I think it makes sense to rename them too.
Part of #1115
|
| |
|
|
| |
Part of #1271
|
| |
|
|
| |
Part of #1271
|
| |
|
|
|
| |
We're about to stop storing `KP_hs_id` in the keystore, so in
preparation, let's update the callsites that attempt to retrieve it.
|
| | |
|
| |
|
|
|
|
| |
`ArtiPathComponent`s are really just `Slugs`.
Part of #1193, #1092
|
| |
|
|
| |
Part of #1242
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the subcredentials were computed in `IptEstablisher::launch`
and stored in `RendRequestContext`. This caused long-running services to
report errors like:
```
WARN tor_hsservice::helpers: Problem while accepting rendezvous request: error: Could not process INTRODUCE request: Introduction handshake was invalid: Circuit-extension handshake authentication failed
```
for clients using newer subcredentials than the ones the service had at
the time the IPT was established.
Fixes #1242
|
| |
|
|
|
| |
Closes #1224, by making it more clear that we aren't keeping a
circuit alive indefinitely.
|
| |
|
|
| |
We can add these accessors as needed.
|
| |
|
|
| |
When we implement this, we'll use APIs from the equix crate.
|
| |\ |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Enough of them have turned out to need to be async so far that I
don't think it's a great idea to commit to making any of them
not-async forever. Additionally, we've written the code that uses
these, and having them be async didn't seem to cause any major
trouble.
By the same "we may want to make these more complicated underneath"
argument, we should IMO leave them as fallible.
|
| | | |
|
| |/ |
|
| |
|
|
|
|
|
|
|
| |
It turns out that we can make `IncomingStream::reject()` consume
self, thus making it impossible to hit the double-close error
from outside the `tor-proto` crate.
Also, we rename `StreamTarget::close()` to `close_pending()` to
better reflect its limited applicability.
|
| | |
|
| |
|
|
| |
(We try to avoid making tons and tons of copies of a secret key.)
|
| |
|
|
| |
This will let avoid some copying inside our HSS code.
|
| |
|
|
|
|
|
| |
I think that the reason we added this was in case we needed
different behavior from DataStream; but on reflection it does seem
that we don't. Having a single type here will make things a bit
simpler.
|
| | |
|
| |
|
|
|
|
|
| |
The function never yields anything but an `Ok`, so we can
simplify its type.
(Not a stable feature, so no semver entry needed)
|
| |
|
|
|
| |
This requires yet more plumbing—this time, of HsCircPool and
NetDirProvider.
|
| |
|
|
|
|
|
|
|
| |
When we go to answer a RendRequest, we need to have a few objects
present. This commit makes sure that they're available at the
right places.
We also note a significant problem with the need for a Subcredential
here.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
IntroPointId was RelayIds but that's wrong, because there can be
different IPTs at the same relay - but also because an established IPT
might change its RelayIds.
Use IptLocalId instead, which I think is the type we decided to use
for this, and which is, conveniently, Copy.
And change the variable names to match, everywhere.
Specifically: in places where an intro point is implied (ipt_mgr.rs,
ipt_establish.rs) use the name `lid` everywhere, like in ipt_mgr.rs.
Elsewhere, use `ipt_lid`.
(We could use a longer name, but in that case it should be changed in
ipt_mgr.rs too.)
No actual functional change in this commit.
|
| |
|
|
|
|
|
| |
We need a type that holds a rend_handshake::IntroRequest object
internally, but where we don't materialize that object from the
Introduce2 message inside the MsgHandler, since that's more crypto
than we want to put in that task.
|
| |
|
|
|
|
|
|
|
|
| |
At the very least, I need FatalError to be distinct:
IptEstablisher::new ought not to fail unless everything is terrible.
Add a the Spawn variant to FatalError (that we'll need soon) and the
Bug variant (which it seems likely we might need).
This also gets rid of the crate-level Result alias.
|
| |
|
|
|
|
| |
If the service encouters operational errors, surfacing them here is
not helpful. So these methods ought to work, if they weren't called
erroneously.
|
| |
|
|
|
|
|
|
|
|
| |
We want to change the error return types of many methods, so we need a
way to name `std::result::Result`.
We could use `StdResult`, but, actually, properly distinguishing the
kinds of errors that can occur in various contexts means we don't
actually want a single Error type for the whole crate, so
`crate::Result` is going to go away.
|
| | |
|
|
|
Also, removed some older structures that don't make sense in the
current design.
Closes #970
|