| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
Here we move the responsibility for removing ExtDoc entries for
vanished blobs into the _caller_ of read_blob(): we want to tidy all
such entries in one go.
Unlike a (reverted) previous approach, this time we don't need a
retry loop.
|
| | | |
|
| | |
| |
| |
| | |
We'll want to use this information to tell us whether to retry.
|
| | |
| |
| |
| | |
I'm about to add a retry mechanism.
|
| | |
| |
| |
| |
| | |
We've already stopped ignoring any DB errors, so we may as well make
sure that any FS errors we encounter are also reported.
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
This will help us keep its members private from the rest
of sqlite.rs, and ensure that things are kept consistent.
(This violates rust formatting for clarity. I'll reindent after.)
|
| | | |
|
| | |
| |
| |
| |
| | |
This is in preparation for making it opaque from the rest
of the code, so that we can more easily reason about it.
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
This can only happen because of a bug or because of db corruption,
and we probably shouldn't ignore it.
|
| | |
| |
| |
| |
| |
| |
| | |
Previously, we would leave the ExtDocs blob to expire on its own,
and it would hang out for up to a week.
Closes #1655.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Also, document that old values will be kicking around
for a little while.
Fortunately:
- Nothing actually looked at these values before.
- All elements in this table have an expiration date, so once a new
version of Arti has been running for a week or two, the old
erroneous values will go away.
|
| |\ \
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
| | |
| | |
| | |
| | | |
This is the version that introduces `root_hint_subjects()`,
which we want our ServerCertVerifier to override.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.)
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3168425
|
| | | |
| | |
| | |
| | | |
Let's use Tokio terminology here.
|
| | | |
| | |
| | |
| | |
| | | |
As requested
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167979
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167978
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167977
|
| | | |
| | |
| | |
| | |
| | | |
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167976
|
| | | |
| | |
| | |
| | | |
This is the TODO we are fixing with this MR.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167975
Also allow ourselves the option of changing this in the future.
|
| | | |
| | |
| | |
| | |
| | | |
Prompted by and partially taken from
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167973
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167972
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167970
|
| | | |
| | |
| | |
| | |
| | | |
See
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167969
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The: table entry for `spawn_thread` was wrong. We use AsyncExecutors'
spawn_blocking which uses tokio::task::spawn_blocking.
This has implications for the semantics, as per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167967
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167968
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167966
|
| | | |
| | |
| | |
| | |
| | | |
As suggested
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2810#note_3167965
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
This will let us call _inner from blocking_io, with a different
precondition. No functional change.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is going to become a hazard. Let's be explicit.
This means using educe to derive the Default for Data.
We also need to update our educe dependency to 0.4.22, since that's
when Default(expression= "...") started working correctly.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
execute_until_first_stall is now simply a wrapper which does some
logging. It will do a bit more in a moment.
Giving the inner function a more obvious name is helpful, since the
executor main loop is a thing one is often looking for.
|
| | | |
| | |
| | |
| | | |
rustfmt.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
This member is the principal one which implemnets Spawn, Blocking and
perhaps ToplevelBlockOn. It doesn't appear that we actually need to
split this into multiple members.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Introduce ToplevelRuntime as an alias, and use it in the top-level
programs.
Now none of the principal protocol implementation code has access to
the executor's toplevel entrypoint, and can't call it by mistake.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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`.
|