| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
Reason is that Vec::with_capacity(len) doesn't actually allocate and the
Rustls export_keying_material() does a .is_empty() check which is under
".len() == 0".
Signed-off-by: David Goulet <[email protected]>
|
| |\
| |
| |
| |
| | |
tor-rtcompat: Disable rustls session resumption
See merge request tpo/core/arti!3710
|
| | | |
|
| | | |
|
| |/ |
|
| | |
|
| |
|
|
|
| |
Now that we can admit to knowing about tor-cert-x509, we can use
TlsCertAndKeys to simplify everything.
|
| | |
|
| | |
|
| |
|
|
| |
Closes #2316.
|
| |
|
|
|
| |
These are as yet unimplemented; there's a stub type
for the providers (nativetls) that won't actually have them.
|
| | |
|
| |
|
|
|
| |
These are all aimed at figuring out in more detail what's going on
in #2079 and related issues.
|
| | |
|
| |
|
|
|
|
| |
This gives us a consistent `listen()` implementation across runtimes,
and gives us flexibility to customize the bind/listen process for TCP
sockets.
|
| |
|
|
| |
Run maint/add_warning
|
| |
|
|
|
| |
I've added these in places that are useful for the debugging that I've
been doing.
|
| |\
| |
| |
| |
| | |
smol: Implement smol in tor-rtcompat
See merge request tpo/core/arti!2986
|
| | | |
|
| |/
|
|
| |
See #1977, #2122.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
First, run
```
git grep -l "^edition =" |
xargs perl -i -pe 's/^edition *=.*/edition = "2024"/;'
```
Second, manually verify that all Cargo.toml files have changed,
and nothing else has changed.
Third, run cargo fmt again.
|
| |\
| |
| |
| |
| | |
Fix Windows compile warnings
See merge request tpo/core/arti!3114
|
| | |
| |
| |
| |
| | |
Use unix-specific crates only if needed and suppress clippy warnings of
unused variables if their usage is unix-specific.
|
| |/ |
|
| |
|
|
|
|
|
|
|
|
| |
futures-rustls provides and re-exports rustls and thus the rustls
dependency is redundant.
Additionally, this removes `aws-lc-rs` and its inherent dependencies
from `Cargo.lock` and the entire project since they've been included
because the rustls dependency did not use `default-features = false`
and rustls by default now depends on `aws-lc-rs` as its crypto engine.
|
| | |
|
| |
|
|
|
|
|
| |
The `IoError::other` function is an easier way to say
`IoError::new(IoErrorKind::Other, ...)`. It's been around since
1.74, but clippy started warning about the more verbose version in
1.87.
|
| |
|
|
|
| |
This comes up on OSX; I hadn't seen it before, so I assume it is new
with Rust 1.86.
|
| |
|
|
|
|
| |
We change `NoUnixAddressSupport` to `NoAfUnixSocketSupport` because it
doesn't make much sense to talk about support for the addresses
separately from support for the sockets.
|
| | |
|
| |\
| |
| |
| |
| |
| |
| | |
Switch from x509-signature to rustls-webpki when using rustls.
Closes #1824 and #1854
See merge request tpo/core/arti!2816
|
| | |
| |
| |
| |
| | |
We do this so that we can make sure there's a provider installed
when we run the tests.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The x509-signature crate is archived, and won't see any more
releases. Using it is tying us to ring 0.16 internally,
which means we depend on two ring versions.
Fortunately, rustls-webpki relaxes some of the earlier restrictions
from the vanilla webpki crate, which means that its certificate parser
now accepts C tor's oddball x509 certificates as valid.
With this change, we can delegate to rustls's built-in
signature-checking code, and we only have to override its
certificate validation. (We still override it with a pile of
comments about how we don't validate link certificates much.)
I've had to include a few certificates: two are for tests,
but one is needed as a placeholder, since we can't construct
a rustls certificate validator without a root cert,
even if we'll never use it.
Closes #1824.
Closes #1854.
|
| | |
| |
| |
| | |
(We had added this rename when rustls renamed it originally.)
|
| | |
| |
| |
| | |
Let's use Tokio terminology here.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
This was referenced and explained from the docs, but didn't exist yet.
Here it is.
Everyone except the Tokio glue, and the CompoundRuntime, just use the
default implementation in terms of spawn_thread. spawn_thread has a
more relaxed contract, so this is correct.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Forbid re-entering the executor using ToplevelBlockOn::block_on.
This was always forbidden in the case of MockExecutor, but that meant
that tests using MockExecutor would malfunction if the code under test
needed to re-enter the executor from sync code (since the code under test
would have to use block_on, which wrong). See #1835.
Provide a function which *can* do this, reenter_block_on. The
MockExecutor needs to know the difference, and other runtimes may too.
They are conceptually quite different operations.
Introduce ToplevelRuntime as a convenience alias.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Document the new plan for blocking interaction in the trait-level
docs for the Blocking trait (used to be SpawnBlocking).
Add cross-references (in some cases to not-yet-existing pieces).
* Rename: spawn_blocking to spawn_thread. We're going to distinguish
thread-creation (relatively expensive) from brief entry to sync code
(relatively cheap, but more restricted).
* Rename the SpawnBlocking trait to Blocking, and its ThreadHandle
to ThreadHandle. This trait is going to gain more functionality.
* Add the missing mention of `Blocking` to the docs for `Runtime`.
|
| |/
|
|
|
|
|
|
|
|
| |
We're going to distinguish top-level runtime entry, from *re*-entry to
an existing executor. It is most convenient to rename this trait
first. Documentation of the distinction will come later.
(We're going to retain the function name `block_on`, but we want the trait
to be more obviously a top-level only thing, though, so we give it a
name that will hopefully avoid it peroulating throughout the codebase..)
|
| | |
|
| |
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| | |
|
| | |
|