| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
See the new commentary text on `ClientCirc` for the rationale.
Signed-off-by: Ian Jackson <[email protected]>
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We are going to get rid of the Arc. Happily there is an id which is
always constructed uniquely and preserved by clone.
(auto-deref lets us make the function take &Self instead of &Arc)
Signed-off-by: Ian Jackson <[email protected]>
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This removes a lot of open-coded Arc::ptr_eq() calls
Signed-off-by: Ian Jackson <[email protected]>
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This will make the code work when it's not an Arc any more.
Signed-off-by: Ian Jackson <[email protected]>
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We are going to get rid of a lot of Arc, so we need the underlying
thing to be Clone.
Signed-off-by: Ian Jackson <[email protected]>
|
| |\ \ \ \ \
| |/ / / /
|/| | | |
| | | | |
| | | | | |
tor-circmgr: Remove a type annotation in a method call
See merge request tpo/core/arti!225
|
| | |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is a method, so the resolution is automatic. It's not clear to
me why this was written out this way, given that extend_ntor is right
above.
Signed-off-by: Ian Jackson <[email protected]>
|
| |/ / / |
|
| |\ \ \
| | | |
| | | |
| | | | |
# Conflicts:
# crates/tor-circmgr/src/build.rs
|
| | |\ \ \
| | |/ /
| |/| |
| | | |
| | | | |
prefer 'unwrap_or_default' to manual constructor
See merge request tpo/core/arti!215
|
| | | | | |
|
| | | | | |
|
| | |\ \ \ |
|
| | | |/ / |
|
| | |\ \ \ |
|
| | | |/ / |
|
| | |\ \ \ |
|
| | | |/ / |
|
| | |/ / |
|
| |/ / |
|
| | |
| |
| |
| |
| |
| |
| | |
This closes arti#256. It makes our behavior match Tor's more closely,
though it has a simpler implementation than Tor. I think that the extra
complexity in Tor's logic is because we used to record timeouts in
the histogram as well as in the success/failure log.
|
| |\ \
| | |
| | |
| | |
| | | |
preemptive.rs: Use Instant::checked_add instead of raw subtraction
See merge request tpo/core/arti!206
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The implementations of `Add` / `Sub` (et al.) on `std::time::Instant`
can panic if the underlying OS structure can't represent the result
(like arti#266). Use Instant::checked_add and print a warning instead,
to prevent panicking.
Also, we now add instead of subtracting; I suspect it's reasonable that
you might not be able to go backward past the first `Instant` created on
some platforms, but going *forward* should probably work?
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
address clippy's latest lint
See merge request tpo/core/arti!205
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
These will require thought; should we ignore them, act on them, or
continue to treat them as internal errors?
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
IIUC, these anticipatd a need to store min_exit_circs_per_port in
CircMgr. But the current design, where it goes into preemptive.rs and
thence to usage, seems to work fine.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We _do_ reject bad hostnames: just not where I once thought we might.
We need to decide if the current behavior is what we want (and I think
it is, probably?).
|
| | | | |
| | | |
| | | |
| | | | |
We're assuming that prop285 is accepted in some form.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Our behavior in handling not-yet-valid router descriptors doesn't match
the C Tor implementation, but it's not a big deal:
we don't currently use router descriptors at all.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
If we fail to convert a curve25519 key to an ed25519 key for checking
the onion-key crosscert, don't call that an internal error: it means
that something is wrong with the provided ntor key.
|
| |/ / /
| | |
| | |
| | |
| | | |
As of tor-spec commit 01122c5bd7d2f0f, the spec is no longer ambiguous
on this point.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
tor-proto: Allow one meta-cell handler at a time.
See merge request tpo/core/arti!204
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Previously the code would let us try to install a meta-cell handler
before the old one was done, leading to possible confusion.
|
| |\ \ \ \
| |/ / /
|/| / /
| |/ /
| | | |
Introduce an experimental benchmarking utility for Arti
See merge request tpo/core/arti!195
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The new `arti-bench` crate does a simple end-to-end benchmark test
embedding Arti: it generates some random data (of configurable amount,
depending on command-line parameters), and then sends said data back and
forth via Arti (which should be configured to use a local Chutney
network).
Additionally, the benchmark can also be run via a local SOCKS5 server
(in order to benchmark the performance via a local Chutney node, for
comparison).
The `tests/chutney/arti-bench.sh` sets up and tears down Chutney as
required to make this work.
This is very much a first cut; there are many things that should
eventually get added, such as support for multiple connections, JSON
output capabilities, running multiple tests, ...
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
fallbackdir: Update list generated on December 15, 2021
See merge request tpo/core/arti!202
|
| | | | |
| | | |
| | | |
| | | | |
Signed-off-by: Tor CI Release <[email protected]>
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
tor-proto: use const-time eq on sendme tags.
See merge request tpo/core/arti!201
|
| | |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
There's no known attack here, but it's best practice to always compare
digests using a constant-time comparison operator.
This resolves an XXXX comment.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Previously we'd always set it to true, allowing one CONNECTED per
half-closed stream even if the stream had already received a
CONNECTED cell.
This resolves an XXXX.
|
| |/ / / |
|
| | | |
| | |
| | |
| | |
| | | |
This was an XXXX before. Now it explains why the behavior is safe for
now, but maybe not forever.
|
| | | |
| | |
| | |
| | |
| | | |
The original comment was a gnomic question about what to box; the real
issue is that we want to avoid copying data in our critical path.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
Previously we didn't retain the value of our cache_usage field when
calling reset() from GetMicrodescsState.
This resolves an XXXX comment.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
Extend trace messages for destroy/truncated reasons.
See merge request tpo/core/arti!200
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It makes sense to put the method for human-readable strings onto the
type itself, so that we can format these whenever they occur.
I'm choosing the "human_str" method name here, since caret-generated
types already have a to_str. I was thinking about using Display,
but caret types already implement that.
I've also moved the message from "warn!" to "debug!", since these
aren't necessarily a problem condition.
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
Refactor directory events to use a new FlagPublisher mechanism.
See merge request tpo/core/arti!188
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This approach tries to preserve the current interface, but uses a
counter-based event backend to implement a coalescing stream of
events that can be represented as small integers. The advantage
here is that publishing events no longer needs to be a blocking
operation, since there is no queue to fill up.
|