summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | Re-indent tor-persist/Cargo.toml.Nick Mathewson2022-04-121-4/+4
| | |
* | | Merge branch 'report-skew' into 'main'eta2022-04-1310-35/+242
|\ \ \ | | | | | | | | | | | | | | | | Report skew estimates from arti-client See merge request tpo/core/arti!455
| * | | arti-client: Report clock skew when it is noteworthyNick Mathewson2022-04-123-6/+52
| | | | | | | | | | | | | | | | | | | | (Also, blame clock skew when it is an explanation of why we cannot finish a connection.)
| * | | chanmgr: expose whether we are failing because of expired certs.Nick Mathewson2022-04-122-20/+87
| | | |
| * | | circmgr: re-export clock skew estimates.Nick Mathewson2022-04-123-0/+16
| | | |
| * | | GuardMgr: publish skew estimates.Nick Mathewson2022-04-124-9/+87
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | Merge branch 'typo' into 'main'eta2022-04-121-3/+3
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | Fix typos See merge request tpo/core/arti!453
| * | | | Fix typosDimitris Apostolou2022-04-111-3/+3
| | | | |
* | | | | Merge branch 'backoff_on_preemptive_circs' into 'main'eta2022-04-124-48/+97
|\ \ \ \ \ | |_|_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | circmgr: back off on preemptive circuits if they fail consistently Closes #437 See merge request tpo/core/arti!456
| * | | | circmgr: back off on preemptive circuits if they fail consistentlyNick Mathewson2022-04-122-8/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | circmgr: Remove now-unused scheduled entry points.Nick Mathewson2022-04-122-18/+9
| | | | | | | | | | | | | | | | | | | | | | | | | Now that we have TaskSchedule, we don't need to expose these any longer.
| * | | | circmgr: Report CircProvenance from AbstractCircMgr.Nick Mathewson2022-04-122-23/+34
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | Merge branch 'guardmgr_test_fix' into 'main'eta2022-04-111-1/+5
|\ \ \ \ | |/ / / |/| / / | |/ / | | | guardmgr: fix a unit test panic. See merge request tpo/core/arti!454
| * / guardmgr: fix a unit test panic.Nick Mathewson2022-04-111-1/+5
|/ / | | | | | | | | | | | | 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.
* | Merge branch 'record-skew-v3' into 'main'Nick Mathewson2022-04-1121-79/+825
|\ \ | | | | | | | | | | | | Collect and analyze clock skew information See merge request tpo/core/arti!450
| * | handshake.rs: Document the time for clock skew authentication.Nick Mathewson2022-04-111-3/+25
| | |
| * | Fold FallbackStatus into Entry.Nick Mathewson2022-04-111-44/+31
| | | | | | | | | | | | This simplifies the code a lot.
| * | Add a couple of TODO items to clock-skew estimator.Nick Mathewson2022-04-111-0/+7
| | |
| * | Implement a better clock skew estimator.Nick Mathewson2022-04-115-24/+390
| | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | Initial functions to determine and expose a clock skew estimate.Nick Mathewson2022-04-078-5/+125
| | | | | | | | | | | | | | | (This is just a placeholder; I'm going to make the functions smarter in the next commit.)
| * | Reformat tor-guardmgr/Cargo.tomlNick Mathewson2022-04-071-12/+12
| | |
| * | GuardMgr: record clock skew information.Nick Mathewson2022-04-076-22/+106
| | | | | | | | | | | | (It is not yet actually used.)
| * | Create and use API to report guard/fallback skew.Nick Mathewson2022-04-074-15/+68
| | | | | | | | | | | | (The information is not yet recorded.)
| * | ChanMgr: Return provenance information from get_or_launchNick Mathewson2022-04-074-21/+40
| | | | | | | | | | | | | | | | | | 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.
| * | chanmgr: bubble ClockSkew up through the Error object.Nick Mathewson2022-04-076-12/+64
| | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | Channel: Expose our view of whether the clock is skewed, and the ageNick Mathewson2022-04-074-1/+37
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | Merge branch 'cargo-audit' into 'main'Nick Mathewson2022-04-081-0/+11
|\ \ \ | | | | | | | | | | | | | | | | fix maint/cargo_audit not propagating error and add temporary exceptions See merge request tpo/core/arti!452
| * | | fix maint/cargo_audit not propagating error and add temporary exceptionstrinity-1686a2022-04-081-0/+11
| |/ /
* | | Merge branch 'stable-coverage' into 'main'Nick Mathewson2022-04-083-8/+5
|\ \ \ | |/ / |/| | | | | | | | use rustc 1.60 for coverage See merge request tpo/core/arti!451
| * | use default toolchain from rustup instead of stable for coveragetrinity-1686a2022-04-081-1/+2
| | | | | | | | | | | | using stable doesn't work for CI because a specific version like 1.60 is installed
| * | bring back RUST_COVERAGE_TOOLCHAINtrinity-1686a2022-04-081-2/+8
| | |
| * | use rustc 1.60 (stable) for coveragetrinity-1686a2022-04-073-15/+5
|/ /
* | Merge branch 'downgrade_rlimit' into 'main'Nick Mathewson2022-04-063-4/+4
|\ \ | | | | | | | | | | | | Downgrade `rlimit` to 0.7. See merge request tpo/core/arti!449
| * | Downgrade `rlimit` to 0.7.Nick Mathewson2022-04-063-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 .
* | | Merge branch 'main' into 'separate_dir_status'Nick Mathewson2022-04-0614-90/+657
|\| | | | | | | | | | | # Conflicts: # doc/semver_status.md
| * | Merge branch 'untimely_dir_is_failed' into 'main'eta2022-04-063-18/+25
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | Treat expired/not-yet-valid directory objects as Errors. Closes #431 See merge request tpo/core/arti!448
| | * | Treat expired/not-yet-valid directory objects as Errors.Nick Mathewson2022-04-053-18/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | Merge branch 'retriable' into 'main'Nick Mathewson2022-04-0511-72/+631
| |\ \ \ | | |/ / | |/| | | | | | | | | | | | | | | | | | Improved handling for retriable errors in circmgr Closes #427 and #421 See merge request tpo/core/arti!443
| | * | Merge branch 'main' into 'retriable'Nick Mathewson2022-04-056-24/+163
| | |\ \ | | |/ / | |/| | | | | | # Conflicts: # doc/semver_status.md
| | * | Distinguish UsageMismatch cases by whether a race is possibleNick Mathewson2022-04-042-7/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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).
| | * | RetryTime: Improve documentation.Nick Mathewson2022-04-041-7/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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".
| | * | RetryTime: make loose_cmp pub.Nick Mathewson2022-04-041-1/+1
| | | |
| | * | RetryTime: use strum::EnumDiscriminants to simplify loose_cmp.Nick Mathewson2022-04-043-26/+99
| | | | | | | | | | | | | | | | | | | | Also add tests for RetryTime comparison functions to make sure they work as expected.
| | * | circmgr: Improve retry-and-or-delay logic.Nick Mathewson2022-04-041-26/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | * | circmgr: implement HasRetryTime.Nick Mathewson2022-04-041-2/+80
| | | |
| | * | guardmgr: implement HasRetryTime.Nick Mathewson2022-04-041-0/+24
| | | |
| | * | chanmgr: implement HasRetryTime.Nick Mathewson2022-04-041-0/+31
| | | |
| | * | circmgr: Improve reporting of error origins.Nick Mathewson2022-04-043-28/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | * | circmgr: Avoid a race condition in circuit usage restrictionNick Mathewson2022-04-044-11/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.)
| | * | tor-error: Add a new RetryTime type and related trait.Nick Mathewson2022-04-044-0/+222
| | | |