| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
| |
This is unfortunately necessary, because after the channel handshake, we
need to give the channel reactor a `StreamOps` handle to the underlying
stream.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Needed for cases where we wrap an object that implements `StreamOps` in
an external type, thereby losing access to the `StreamOps`
functionality. For example, during the channel handshake, we `.split()`
the stream that implements `StreamOps`, which leaves us with a
`SplitSink` and a `SplitStream`, neither of which implement `StreamOps`.
Getting a handle to the underlying object that implements `StreamOps`
(for example, a file handle) *before* the stream is `.split()` enables
us to use `StreamOps` to manipulate the underlying split stream.
This commit also introduces a special `UnsupportedStreamOpsHandle`,
which is a type that implements `StreamOps`, but always returns an
error. This type is meant to simplify error handling and usage, and is
meant to be used in cases where `StreamOps` is not supported. TODO: the
name of this type is pretty confusing (it's very similar to
`UnsupportedStreamOp`, which is an error type), and should probably be
renamed to something else (`NoOpStreamOpsHandle`,
`BrokenStreamOpsHandle`, `DummyStreamOpsHandle` come to mind...).
Note: this changes the `StreamOps` trait to be slightly different from
what I originally envisioned in !2660 and #1769
|
| |
|
|
| |
Due to the limitations on RPIT, it's better to use a GAT for now.
|
| |
|
|
|
| |
This adds a new SpawnBlocking trait, which exposes the spawn_blocking
function that tokio, async-std, and other runtimes have.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Part of #1769
|
| | |
|
| |
|
|
|
| |
It turns out that these types are generally useful, and that they
are in fact needed for tor-rtmock to compile without a PreferredRuntime.
|
| | |
|
| |
|
|
| |
(The trait no longer has any async methods.)
|
| | |
|
| |
|
|
|
|
|
| |
Since there is no way to construct a unix::SocketAddr on these
platforms, it's harmless to provide an implementation for
NetStreamProvider. What's more, doing so greatly simplifies our
AbstractAddr implementation.
|
| | |
|
| | |
|
| |
|
|
|
| |
As before, this commit does nothing interesting: it's a separate commit
because it reindents a lot of code.
|
| | |
|
| | |
|
| |
|
|
|
| |
This commit does nothing interesting yet: it's a separate commit
because it reindents a lot of code.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
(And similarly rename TcpListener to NetStreamListener,
along with their TcpStream/TcpListener associated types.)
These types are about to become generic over addresses,
and therefore shouldn't be named after TCP.
Renaming was done mostly with Rust Analyzer,
except for some macros that needed to be hand-edited.
(I'll revise the comments in the next commit;
this one is all about renaming.)
|
| |
|
|
|
|
|
|
|
|
| |
It's redundant with the incoming() method (which turns the
TcpListener into a Stream of connections), and nothing actually used
it outside of tests.
Removing this method allows us to simplify our TcpListener code a
good deal, as can be seen by some of the implementations we removed
from our example and testing code.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add a function to get the keying material as detailed by RFC 5705.
Because native-tls doesn't have such support, there is a place holder
panic!() for now.
This means that for the forseable future, relay would only work with
rustls until we figure out a solution for native-tls.
Closes #1432
Signed-off-by: David Goulet <[email protected]>
|
| |
|
|
|
|
|
| |
When using openssl on Linux, this saves us about 1.4 MB due to not
loading the default CAs and CRLs (which Tor doesn't use.)
Addresses part of #1027.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
The rustls upgrade will solve #1377 and CVE-2024-32650.
Note that we've had to patch our RustlsProvider impl a bit in order
to keep the tests passing. See comments.
Closes #1377.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
The futures-rustls crate has supplanted the async-rustls crate,
and it requires/embeds rustls 0.22.
Closes #1179.
|
| | |
|
| |
|
|
| |
Resolves clippy complaints about needless fallible conversions.
|
| |
|
|
|
| |
FTR I don't think agree with clippy on this question, but then I often
don't.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
In particular, when the (unstable) tokio tracing feature is enabled,
every tracing line includes the name of where the current task was
created. Without this change, that ends up being the name of
intermediate trait methods like TokioRuntimeHandle::block_on, which is
not very helpful.
Adding the `track_caller` attribute causes the name of the caller of
these methods to be used instead, which is typically more helpful.
IIUC this change is not breaking in terms of semver
https://rustc-dev-guide.rust-lang.org/backend/implicit-caller-location.html.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
This panics on error, and we're fine with a panic on misbehavior in
tests.
|
| |
|
|
|
| |
This is precisely the result of running the rune in
maint/adhoc-add-lint-blocks.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
The lack of this seems to have been an oversight.
|
| |
|
|
|
|
|
|
| |
This will make it much more convenient for code that only wants one of
these traits (or a subset of them). This is a good thing to support
because it will allow us to use a ZST in places that do not need an
actual async runtime handle (typically, the runtime handle is needed
only for spawn).
|
| |
|
|
|
|
|
|
| |
Currently, Arti doesn't need this. But once it does, it will be
way better to have a separate type for connected sockets, rather
than having to error-check every time somebody gives us a socket.
Part of #410
|