summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | Add custom "cargo-husky" hook scriptsS0AndS02021-08-173-2/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > Check the Read Me file for Cargo Husky crate for details > > https://github.com/rhysd/cargo-husky#readme These changes allow for local `git commit` and `git push` related hooks to more closely match remote CI/CD operations. Most notably the `cargo clippy...` lint command from ".gitlab-ci.yml" file now may guard against committing/pushing code that would otherwise cause CI/CD pipeline failures.
* | | Merge branch 'binary_size' into 'main'eta2021-11-091-1/+20
|\ \ \ | | | | | | | | | | | | | | | | Tune the 'profile.release' options for a smaller compile size. See merge request tpo/core/arti!124
| * | | Tune the 'profile.release' options for a smaller compile size.Nick Mathewson2021-11-081-1/+20
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By enabling link-time optimization, setting 'opt-level=s', and setting compilation-units=1, we can get a much smaller download size, which is one of our objectives. Making these changes reduces the binary size for me (on x86_64) by about 42%. If you also run "strip --strip-debug" on the resulting binary, the resulting size is 55% smaller than the original binary size. These effects persist if you compress the binary. Supposing that we use xz compression, these options make save 32% of compressed binary size. If we also "strip --strip-debug" before compressing, the compressed binary saves 43% from the original binary size. With all of these options applied, on x86_64 linux with xz compression, we're at a nice 1.5 MiB download. If we statically link to openssl and sqlite, we're still only at a 2.8 MiB download. There is a build time cost to these changes: for me, it comes to a 10%-25% build time increase. This is part of arti#172.
* | | Remove doubly incorrect entry from WANT_FROM_OTHER_CRATESNick Mathewson2021-11-081-3/+0
| | |
* | | Add a couple of pieces of missing documentation.Nick Mathewson2021-11-082-4/+6
|/ /
* | More tests on tor-dirmgr::stateNick Mathewson2021-11-083-27/+113
| | | | | | | | | | These test our download schedules, resetting to the original state, and storing downloaded objects.
* | Merge branch 'ci-no-printf' into 'main'eta2021-11-052-1/+5
|\ \ | | | | | | | | | | | | | | | | | | In rust-nightly CI, forbid debugging prints. Closes #218 See merge request tpo/core/arti!123
| * | In rust-nightly CI, forbid debugging prints.Nick Mathewson2021-11-042-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes the rust-nightly CI task fail if it detects any dbg!(), println!(), or eprintln!() calls in production code. Because of clippy limitations, it may also gripe about calls to these macros in our tests. The preferred workarounds are to either instead. Both are acceptable. We're doing this check in CI rather than unconditionally with clippy directives, since we often want to have these calls in our code temporarily while we're developing. Some day we might want this test to go into a pre-push hook. This patch also adds #![allow()] directives for println!() and eprintln!() in the arti crate. Since that one isn't a library, it's okay for it to speak to stdout/stderr. Closes #218.
* | | Merge branch 'osx_sdk_10.12'Nick Mathewson2021-11-041-3/+10
|\ \ \ | |/ / |/| |
| * | Update reproducible_build.sh to use OSX SDK 10.12Nick Mathewson2021-11-041-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need this for clock_gettime_nsec_np(). The source is not canonical, but neither was the one we were using before. To mitigate this, I've added a digest check on the SDK after downloading it. A 100% real canonical reproducible build process will probably require Apple hardware anyway. Closes #221
* | | Remove one more test println!().Nick Mathewson2021-11-041-1/+0
| | |
* | | Replace all println/eprintln calls outside of arti CLI with trace.Nick Mathewson2021-11-048-30/+40
| | |
* | | Remove all remaining dbg! instances.Nick Mathewson2021-11-044-11/+0
| | |
* | | tor-dirmgr: tests for docid module.Nick Mathewson2021-11-041-1/+156
|/ /
* | Basic tests for readonly estimators, and estimator migration.Nick Mathewson2021-11-032-2/+92
| | | | | | | | | | Also add a comment about a possible problem behavior in read-only estimators.
* | Change how TestingStateMgr handles locking.Nick Mathewson2021-11-031-43/+80
| | | | | | | | | | | | Previously it was either all-locked or all-not-locked. Now you can simulate having the same shared storage opened by multiple managers, only one of which has the lock.
* | tor-proto: Use a dedicated sender for channel cells, make full-duplexeta2021-11-032-47/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | @nickm pointed out that refactoring tor_proto::channel's Reactor to do sending as well meant that it could only send or receive, but not both, simultaneously, which was bad! To fix this, rewrite Reactor::run_once to use a handcrafted future (with futures::future::poll_fn) that can handle the logic required to push items onto the sink asynchronously (i.e. checking that it can be written to before trying to do that, and then flushing it). This also means we don't use select_biased! any more, and just handroll that logic ourselves; as a small bonus, we can now process all 3 kinds of message in one run_once() call, instead of having to do only one of them.
* | Get rid of tor-proto's ChannelImpl, and use the reactor more insteadeta2021-11-0311-348/+268
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of awkwardly sharing the internals of a `tor-proto` `Channel` between the reactor task and any other tasks, move most of the internals into the reactor and have other tasks communicate with the reactor via message-passing to allocate circuits and send cells. This makes a lot of things simple, and has convenient properties like not needing to wrap the `Channel` in an `Arc` (though some places in the code still do this for now). A lot of test code required tweaking in order to deal with the refactor; in fact, fixing the tests probably took longer than writing the mainline code (!). Importantly, we now use `tokio`'s `tokio::test` annotation instead of `async_test`, so that we can run things in the background (which is required to have reactors running for the circuit tests). This is an instance of #205, and also kind of #217.
* | Disable a check in exitpathNick Mathewson2021-11-021-1/+2
| | | | | | | | | | This check relies on families being enforced correctly, which is not the case when specifying a fixed exit and using guards. (See #183)
* | Allow clone-on-copy in tor-circmgr tests to fix a nightly-only clippy warning.Nick Mathewson2021-11-022-0/+2
| |
* | Merge branch 'bug219'Nick Mathewson2021-11-023-63/+28
|\ \
| * | Refactor tor-guardmgr's inter-task communication.Nick Mathewson2021-11-023-63/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is based on @eta's patches for !118 and !119: Since we already have an unbounded channel, we don't need to use an elaborate mess of one-shot senders. We can just use the unbounded_send() method, which also lets us enqueue a message without having to await. Closes #219.
* | | tor-circmgr: test ExitPathBuilder with guards.Nick Mathewson2021-11-024-0/+115
| | |
* | | tor-circmgr: test DirPathBuilder with GuardMgr.Nick Mathewson2021-11-023-1/+43
| | |
* | | tor-circmgr: testing for NoUsage and TimeoutTesting usageNick Mathewson2021-11-021-0/+24
| | | | | | | | | | | | This doesn't add much to coverage, but it's important.
* | | Merge branch 'timestamp'Nick Mathewson2021-11-0212-47/+286
|\ \ \
| * | | Add a comment to explain the computation of net_has_been_down.Nick Mathewson2021-11-021-0/+5
| | | |
| * | | tor-guardmgr: Add tests for a few functions.Nick Mathewson2021-11-022-0/+57
| | | |
| * | | Mark primary guards as retriable when we come back online.Nick Mathewson2021-11-024-47/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We define "coming back online" as happening when a guard attempt succeeds, if that attempt that was launched when we seemed to be offline. We define "seeming to be offline" as having all of our primary guards marked unreachable, and having received no incoming network traffic in a while. Closes #216.
| * | | Use coarsetime to build an incoming traffic timestamp.Nick Mathewson2021-11-027-0/+160
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need this for the circuit timeout estimator (#57). It needs to know "how recently have we got some incoming traffic", so that it can tell whether a circuit has truly timed out, or whether the entire network is down. I'm implementing this with coarsetime, since we need to update these in response to every single incoming cell, and we need the timestamp operation to be _fast_. (This reinstates an earlier commit, f30b2280, which I reverted because we didn't need it at the time.) Closes #179.
* | | | Merge remote-tracking branch 'origin/mr/119'Nick Mathewson2021-11-022-85/+31
|\ \ \ \ | |_|/ / |/| | |
| * | | Refactor tor_proto::circuit::Reactor to use an UnboundedSendereta2021-11-022-85/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Basically the same thing as 371437d3384ed73520e7141e66874be3d85f1df0 ("Refactor tor_proto::channel::Reactor to use an UnboundedSender"), but for tor_proto::circuit's Reactor instead. (part of arti#217)
* | | | tor-circmgr: tests for netwoks with no exitsNick Mathewson2021-11-022-25/+76
|/ / /
* | | Merge remote-tracking branch 'origin/mr/118'Nick Mathewson2021-11-022-78/+32
|\ \ \
| * | | Refactor tor_proto::channel::Reactor to use an UnboundedSendereta2021-11-022-78/+32
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There wasn't any good reason for tor-proto's channel reactor to use a shedload of oneshot channels instead of just an mpsc UnboundedSender, and the whole `CtrlResult` thing made even less sense. Straighten this code out by replacing all of that machinery with a simple UnboundedSender, instead. (part of arti#218)
* | | Remove some dbg!() calls in real code.Nick Mathewson2021-11-023-4/+1
| | |
* | | tor-circmgr::usage: Add a few more tests.Nick Mathewson2021-11-021-2/+66
|/ /
* | minimal-versions: switch to 1.53.Nick Mathewson2021-10-311-1/+1
| |
* | add ci check for deps minimal versions and msrvTrinity Pointard2021-10-311-0/+12
| |
* | readme: Add crates.io badge at the topDavid Goulet2021-10-291-0/+2
| | | | | | | | Signed-off-by: David Goulet <[email protected]>
* | Add our release instructions to version control.Nick Mathewson2021-10-291-0/+40
| |
* | Cargo.lock: v0.0.1 is now published.arti-v0.0.1Nick Mathewson2021-10-291-26/+26
| |
* | tor-persist: serde usage now requires derive feature.Nick Mathewson2021-10-291-2/+1
| |
* | Bump all crate versions to 0.0.1Nick Mathewson2021-10-2926-123/+123
| |
* | Remove alternative-name handling from exclude_contributors.txtNick Mathewson2021-10-291-4/+2
| | | | | | | | | | | | This doesn't actually do the right thing: it will make somebody get ignored completely for a release if they _only_ use their alternative name.
* | thanks.sh: Remove tempdir on exit.Nick Mathewson2021-10-291-0/+2
| |
* | Fix shellcheck warnings in thanks.shNick Mathewson2021-10-291-3/+3
| |
* | Merge remote-tracking branch 'origin/mr/113'Nick Mathewson2021-10-292-0/+37
|\ \
| * | Add an attempt at autogenerating contributor lists for releaseseta2021-10-292-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Disclaimer: I have no idea what I'm doing when it comes to shell scripts. maint/thanks.sh autogenerates a list of contributors since a revision (that you pass it on the command line), intended to make the work of going through the shortlog a bit less manual. It can exclude contributors' names given in maint/exclude_contributors.txt, in order to filter out people who work for Tor, or who commit under more than one name.
* | | Add a list_crates.py script, for help with foreach scripting.Nick Mathewson2021-10-291-0/+23
|/ /