summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | Give CfgPath an alternative inner representation.Nick Mathewson2021-11-212-36/+43
| | | | | | | | | | | | | | | | | | | | | | | | In order to handle explicitly specified path buffers directly, we now let CfgPath be either a string (that gets expanded) or a PathBuf (that doesn't). This simplifies TorClientConfig::with_directories()
| * | Give every ConfigBuilder a From<Config> implementation.Nick Mathewson2021-11-214-6/+81
| | | | | | | | | | | | This will make it more convenient to reconfigure things.
| * | Ensure that every section-level config type has a builder() function.Nick Mathewson2021-11-215-2/+44
| | |
| * | Make arti-client config object match arti config better.Nick Mathewson2021-11-215-85/+107
| | | | | | | | | | | | | | | | | | | | | | | | Now every section that the two configuration objects share has the same type and name. This should help us in documenting our configuration in a way that doesn't confuse people. There is still lots of API work to go.
| * | Lower StorageConfig to arti-client crateNick Mathewson2021-11-213-40/+42
| | |
* | | Merge commit '98f38dc' (arti!131) into HEADeta2021-11-226-0/+456
|\ \ \ | | | | | | | | | | | | | | | | This commit message totally gives away the cursed way in which I use git. branches? what are those?
| * | | Initial cut at a typed event framework for arti (arti#230).eta2021-11-226-0/+456
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implements a basic typed event broadcast mechanism, as described in arti#230: consumers of the new `tor-events` crate can emit `TorEvent` events, which others can consume via the `TorEventReceiver`. Under the hood, the crate uses the `async-broadcast` (https://github.com/smol-rs/async-broadcast) crate, and a `futures::mpsc::UnboundedSender` for the event emitters; these are glued together in the `EventReactor`, which must be run in a background thread for things to work. (This is done so event sending is always cheap and non-blocking, since `async-broadcast` senders don't have this functionality.) Additionally, the `TorEventKind` type is used to implement selective event reception / emission: receivers can subscribe to certain event types (and in fact start out receiving nothing), which filters the set of events they receive. Having no subscribers for a given event type means it won't even be emitted in the first place, making things more efficient.
* | | | Use consistent name for ns_consensus feature.Nick Mathewson2021-11-211-6/+6
| | | |
* | | | Update to latest fuzzing corporaNick Mathewson2021-11-211-0/+0
| |/ / |/| |
* | | Allow type-complexity in hyper.rs exampleNick Mathewson2021-11-211-0/+1
| | | | | | | | | | | | | | | This isn't the prettiest, but suppressing the warning does make the example warning free.
* | | Document (and allow) behavior for weird values of subnet masks.Nick Mathewson2021-11-181-2/+10
| | | | | | | | | | | | Chutney needs this, to avoid putting every relay in the same family.
* | | Use named fields for the elements of ConfigBuildErrorNick Mathewson2021-11-184-23/+49
| | |
* | | Rename RetryConfig to DownloadSchedule, fold in parallelism.Nick Mathewson2021-11-186-85/+87
| | |
* | | Move the socks_port option into a new proxy section.Nick Mathewson2021-11-184-9/+29
| | | | | | | | | | | | Now there are no options that aren't in a toml section.
* | | Rename the "network" configuration section to "tor_network".Nick Mathewson2021-11-181-2/+2
| | | | | | | | | | | | | | | This is more accurate, since it describes the details of the tor network that we're connecting to.
* | | Rename addr_config to address_filter; clarify its usage.Nick Mathewson2021-11-182-5/+6
| | |
* | | Flatten enforce_distance into path_rules.Nick Mathewson2021-11-186-24/+71
| | | | | | | | | | | | Also use the path_rules name consistently throughout the code.
* | | Fold "circuit_timing" and "request_timing" into a single section.Nick Mathewson2021-11-186-86/+33
| | |
* | | Move top-level configuration downwards from `arti` to `arti-config`.Nick Mathewson2021-11-1826-306/+537
| | | | | | | | | | | | | | | | | | | | | | | | To do this at all neatly, I had to split out `tor-config` from `arti-config` again, and putting the lower level stuff (paths, builder errors) into tor-config. I also changed our use of derive_builder to always use a common error type, to avoid error type proliferation.
* | | Merge remote-tracking branch 'origin/mr/134'Nick Mathewson2021-11-182-22/+28
|\ \ \
| * | | Make unreliable tor-proto tests more reliable (arti#238).eta2021-11-182-22/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `bad_extend_*` failures were caused by bad test code in `bad_extend_test_impl` that used `futures::join!`; this meant that the reactor could receive the `Extended2` cell before it actually got the `ExtendNtor` request, which caused it to get (quite rightly) confused and close the circuit. Spawning a background thread which has a short delay before sending the `Extended2` cell seems to have alleviated this problem. `new_circ_create_failure` is similar; I think the reactor was getting dropped before it had a chance to flush out its `CreateFast` cell properly, because it had already gotten the result back (since the test code sends it indiscriminately). This was "fixed" in much the same manner as the other test: making it wait a bit before sending the result cell back. There seem to be other tests that use `futures::join!` (like `begindir`?), and use similarly erroneous patterns; I haven't gotten any to fail reliably enough to be able to debug them, though.
* | | | Merge branch 'update-pfx' into 'main'eta2021-11-182-1/+1
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | use 3des instead of rc2 in .pfx test fixture Closes #239 See merge request tpo/core/arti!133
| * | | use 3des instead of rc2 in .pfx test fixtureTrinity Pointard2021-11-182-1/+1
|/ / /
* | | Merge remote-tracking branch 'origin/mr/131'Nick Mathewson2021-11-171-44/+44
|\ \ \
| * | | update dependenciesTrinity Pointard2021-11-171-46/+46
| | | |
* | | | Typo fix from reddit thread.Nick Mathewson2021-11-171-1/+1
| | | |
* | | | Remove dependency from arti-client to tor-config.Nick Mathewson2021-11-164-10/+16
| | | | | | | | | | | | | | | | | | | | I'm about to make tor-config a higher-level module, so it can't be a dependency for tor-config.
* | | | Remove unused "dirs" dependency from tor-persist.Nick Mathewson2021-11-162-2/+0
| | | |
* | | | Always use optimistic data for begindir connections.Nick Mathewson2021-11-161-1/+5
| | | | | | | | | | | | | | | | Closes #226.
* | | | Merge branch 'ticket125' into 'main'eta2021-11-1626-172/+349
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Put most non-universally-needed functionality behind features Closes #125 See merge request tpo/core/arti!129
| * | | | tor-dirclient: Put routerdesc download behind a feature.Nick Mathewson2021-11-125-4/+25
| | | | | | | | | | | | | | | | | | | | Part of #125
| * | | | tor-dirmgr: put routerdesc storage behind a feature.Nick Mathewson2021-11-125-23/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (We keep routerdescs in the schema, since we don't want _that_ to fragment.) Part of #125.
| * | | | tor-netdoc: put NS consensus documents behind a feature.Nick Mathewson2021-11-127-3/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clients never need these. Part of #125.
| * | | | tor-netdoc: Split the two kinds of routerstatus into their own modulesNick Mathewson2021-11-123-128/+164
| | | | |
| * | | | tor-netdoc: Put the "routerdesc" document type behind a feature.Nick Mathewson2021-11-129-0/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nothing in arti currently uses this document type. Eventually it will be useful for relays and for bridge clients. I've left the "SHA1 digest of a router descriptor" type available unconditinoally, however, since it does get used in a few places. Part of #125.
| * | | | Remove unused tor-consdiff/src/cmd.rs file.Nick Mathewson2021-11-121-8/+0
| | | | | | | | | | | | | | | | | | | | (Found while looking for unused features for #125)
| * | | | tor-llcrypto: Put currently unused functions behind features.Nick Mathewson2021-11-125-9/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't currently need a couple of the key manipulation features that we have, since we aren't yet doing relays or onion service clients. Part of #125
* | | | | Merge branch 'issue_222' into 'main'eta2021-11-169-730/+804
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use tor_rtcompat::test_with_all_runtimes!() in place of #[tokio::test] Closes #222 See merge request tpo/core/arti!130
| * | | | | tor-proto: Use tor-rtcompat macros for testing, not tokio.Nick Mathewson2021-11-157-712/+790
| | | | | | | | | | | | | | | | | | | | | | | | Closes #222.
| * | | | | tor-proto: Stop using async_test in halfstream.rs and sendme.rsNick Mathewson2021-11-152-18/+14
|/ / / / / | | | | | | | | | | | | | | | Thanks to eta's refactoring, these tests no longer need to be async.
* | / / / Update to simple_asn1 0.6.1.Nick Mathewson2021-11-142-3/+3
| |/ / / |/| | | | | | | | | | | | | | | | | | | This is a security fix for a panic. Closes #236
* | | | A few more eprintln!() removals that I missed.Nick Mathewson2021-11-131-4/+0
| | | |
* | | | Replace or remove testing eprintln!()s.Nick Mathewson2021-11-131-3/+4
| | | | | | | | | | | | | | | | | | | | The clippy code for warning about these on nightly CI can't tell the difference between cfg(test) and no cfg(test).
* | | | Resolve a dead-code warning on nightly.Nick Mathewson2021-11-131-0/+2
| | | | | | | | | | | | | | | | The `circid` field in `ClientCirc` is now testing-only.
* | | | Remove the unused `published` field from GenericRouterStatus.Nick Mathewson2021-11-123-23/+3
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This field isn't used in modern Tor, and has never been used in Arti. If tor!489 is merged, then it will no longer contain a useful value in future consensuses. We shouldn't store it, or else somebody else will get the smart idea of using it for something. This commit breaks API compatibility for tor-netdoc with the `build_docs` feature enabled. I haven't entered that into the semver_status.md file, since we already have a pending tor-netdoc API breaker in !129.
* | | Merge remote-tracking branch 'origin/mr/128'Nick Mathewson2021-11-121-4/+8
|\ \ \ | |/ / |/| |
| * | normalize --target to better reuse build artifactsTrinity Pointard2021-11-121-3/+3
| | | | | | | | | | | | | | | | | | | | | testing was done on a different target than building, so everything was compiled twice (actually, it's the same target, but rust doesn't realize that) makes build+test about 20% faster
| * | try to cache cargo-auditTrinity Pointard2021-11-121-1/+5
| | |
* | | Merge branch 'proto-circuit-refactor' into 'main'eta2021-11-1216-1378/+1553
|\ \ \ | |/ / |/| | | | | | | | Completely overhaul the tor-proto circuit reactor See merge request tpo/core/arti!126
| * | Get rid of unbounded stream sender, and RawCellStreameta2021-11-129-149/+183
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the reactor would use an `UnboundedSender` to send things to the `RawCellStream`, in order that the reactor wouldn't block if you failed to read from the latter. This is bad, though, since it means people can just run us out of memory by sending lots of things. To fix this, we make the new `StreamReader` type (which does the reading parts from `RawCellStream`) keep track of the stream's receive window and issue SENDMEs once *it* has consumed enough data to require it, thus meaning that we shouldn't get sent enough data to fill the channel between reactor and `StreamReader` (and, if we do, that's someone trying to flood us, and we abort the circuit). As hinted to above, the `RawCellStream` was removed and its reading functionalities replaced by `StreamReader`; its writing functionalities are handled by `StreamTarget` anyway, so we just give out one of those for the write end. This now means we don't need any mutexes! note: this commit introduces a known issue, arti#230