| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | | |
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
Report skew estimates from arti-client
See merge request tpo/core/arti!455
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
(Also, blame clock skew when it is an explanation of why we cannot
finish a connection.)
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Instead of just having a function that recalculates the latest clock
skew, instead recalculate the clock skew when it may have changed,
and notify other processes via a postage::watch.
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
Fix typos
See merge request tpo/core/arti!453
|
| | | | | | |
|
| |\ \ \ \ \
| |_|_|/ /
|/| | | |
| | | | |
| | | | |
| | | | |
| | | | | |
circmgr: back off on preemptive circuits if they fail consistently
Closes #437
See merge request tpo/core/arti!456
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Rather than running preemptive circuit construction every 10
seconds, we change it to back off when it is "failing". (We define
"failing" as creating no new circuits, and as giving at least one
error.)
This change means that we'll have one less reason to hammer the
network when our connectivity is failed for some reason.
Closes #437.
Part of #329.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Now that we have TaskSchedule, we don't need to expose these any
longer.
|
| |/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This feature is similar to ChanProvenance from ChanMgr, except that
we don't yet need to report it outside the crate. I'm going to use
it to distinguish newly created circuits from existing circuits in
the preemptive circuit builder.
|
| |\ \ \ \
| |/ / /
|/| / /
| |/ /
| | | |
guardmgr: fix a unit test panic.
See merge request tpo/core/arti!454
|
| |/ /
| |
| |
| |
| |
| |
| | |
Apparently on OSX you are not allowed to construct an Instant that is a
long time before the time when the test is running.
Also, fix the length of a year in this test.
|
| |\ \
| | |
| | |
| | |
| | | |
Collect and analyze clock skew information
See merge request tpo/core/arti!450
|
| | | | |
|
| | | |
| | |
| | |
| | | |
This simplifies the code a lot.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This time, our estimator discards outliers, takes the mean of what's
left, and uses the standard deviation to try to figure out how
seriously to take our report of skew/not-skew.
These estimates are still not actually used.
|
| | | |
| | |
| | |
| | |
| | | |
(This is just a placeholder; I'm going to make the functions
smarter in the next commit.)
|
| | | | |
|
| | | |
| | |
| | |
| | | |
(It is not yet actually used.)
|
| | | |
| | |
| | |
| | | |
(The information is not yet recorded.)
|
| | | |
| | |
| | |
| | |
| | |
| | | |
We need this since we want to report certain conditions only when
they happen on a new channel, not if we observe them on a
preexisting channel.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Fortunately, we don't need a separate type here: authenticated
clock skew can only come attached to a `tor_proto::Error`.
We also remove skew from `tor_proto::Error::HandshakeCertsExpired`,
since it would now be redundant.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
of a channel.
At first I wanted to have this information not be a part of channels
at all, but it is a fairly tiny amount of data, and the alternatives
are pretty crufty.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
fix maint/cargo_audit not propagating error and add temporary exceptions
See merge request tpo/core/arti!452
|
| | |/ / |
|
| |\ \ \
| |/ /
|/| |
| | |
| | | |
use rustc 1.60 for coverage
See merge request tpo/core/arti!451
|
| | | |
| | |
| | |
| | | |
using stable doesn't work for CI because a specific version like 1.60 is installed
|
| | | | |
|
| |/ / |
|
| |\ \
| | |
| | |
| | |
| | | |
Downgrade `rlimit` to 0.7.
See merge request tpo/core/arti!449
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Upstream 0.8.2 has broken compilation with Rust 1.53; versions
0.8.{0,1} have been yanked.
Possibly by the time the next arti version comes out, they'll have
fixed this situation, or we'll have upgraded our MSRV.
Upstream issue at https://github.com/Nugine/rlimit/issues/42 .
|
| |\| |
| | |
| | |
| | | |
# Conflicts:
# doc/semver_status.md
|
| | |\ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Treat expired/not-yet-valid directory objects as Errors.
Closes #431
See merge request tpo/core/arti!448
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Doing this will make us treat caches that send us these objects as
not-working, and close circuits to them instead of trying over and
over.
The case where we add a document from the cache requires special
handling: it isn't actually a error to find an expired document in
our cache (unless the passage of time itself is erroneous, which is
a debatable proposition at best).
Fixes #431.
|
| | |\ \ \
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | | |
Improved handling for retriable errors in circmgr
Closes #427 and #421
See merge request tpo/core/arti!443
|
| | | |\ \
| | |/ /
| |/| |
| | | | |
# Conflicts:
# doc/semver_status.md
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This lets us say that the UsageMismatch cases in some parts of the
code reflect a programming error (RetryTime::Never), whereas in
other case it reflects another circuit request getting to the
circuit first (RetryTime::Immediate).
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
For each case, describe its semantics (in addition to when you would
create it).
Explain the relationship between After and At.
Stop saying "Strategy": we renamed this type to "RetryTime".
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Also add tests for RetryTime comparison functions to make sure they
work as expected.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Use the new RetryTime type and its associates to decide how long to
wait (if at all) between attempts to build a circuit.
Closes #421.
Part of #329.
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Previously we did not distinguish errors that came from pending
circuits from errors that came from the circuits we were
building. We also reported errors as coming from "Left" or "Right",
instead of a more reasonable description.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We were treating restrict_mut() failures as internal errors, and
using internal errors to represent them. But in fact, these
failures are entirely possible based on timing. Here's how it
happens:
* Two different circuit requests arrive at the same time, and both
notice a pending circuit that they could use.
* The pending circuit completes; both pending requests are notified.
* The first request calls restrict_mut(), and restricts the request
in such a way that the second couldn't use it.
* The second request calls restrict_mut(), and gets a failure.
Because of this issue, we treat these errors as transient failures
and just wait for another circuit.
Closes #427.
(This is not a breaking API change, since `AbstractSpec` is a
crate-private trait.)
|
| | | | | |
|