summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | Temporarily make ptmgr required for arti-client :/Nick Mathewson2022-11-282-2/+5
| | |
| * | PtMgr: Use a persistent state directory for PT state.Nick Mathewson2022-11-285-11/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes a `pt_state` directory inside .local/share/arti (or the local equivalent), right next to our existing `state` dir. Ideally we would use a separate directory for each PT, but we have a very fuzzy "what is a specific PT" notion. Closes #667
| * | Integrate PtMgr into arti-client.Nick Mathewson2022-11-284-3/+35
| | | | | | | | | | | | | | | | | | | | | | | | If support is available at compile-time, then we construct a PtMgr and register it with the ChanMgr. We keep a handle to it ourself so that we can reconfigure it as needed. Closes #659.
| * | Fix ChanMgr APIs for setting PtMgr etc to match what TorClient wants.Nick Mathewson2022-11-281-7/+4
| | |
| * | Revise the API of "PtMgr::reconfigure"Nick Mathewson2022-11-281-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | I prefer that it not take `&mut self`, since PtMgr already has interior mutability. I also need it to take `tor_config::Reconfigure` argument, in case it gains any more smarts about validation in the future.
| * | ptmgr: Note a TODO issue around TempDir.Nick Mathewson2022-11-281-0/+2
| | |
| * | ptmgr: Fill in some error-related code; resolve TODOs.Nick Mathewson2022-11-283-8/+55
| | |
| * | ptmgr: clear up unused_import exceptions.Nick Mathewson2022-11-282-16/+21
| | |
| * | PtMgr: New features section in README.mdNick Mathewson2022-11-282-6/+13
| | | | | | | | | | | | | | | | | | | | | Per convention, have a `full` feature. Also, downgrade the 'TODO pt-client' entries in README::limitations, since they are not blockers for 1.1.0.
| * | ptmgr: Mark PtMessage and next_message as experimental-api.Nick Mathewson2022-11-284-3/+27
| | | | | | | | | | | | | | | | | | | | | | | | These are implementation details and we don't want to mark them as stable. To do this, I needed to apply some additional options to the example code's configuration in Cargo.toml.
* | | Merge branch 'update_packages_20221128' into 'main'Ian Jackson2022-11-292-151/+161
|\ \ \ | | | | | | | | | | | | | | | | Dependency upgrades and updates in preparation for upcoming release See merge request tpo/core/arti!892
| * | | Switch from sha-1 back to sha1.Nick Mathewson2022-11-292-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | As near as I can tell, the rust-crypto SHA1 crate was called `sha-1` for a while because of a conflict with a different SHA1 crate. Now they apparently have the `sha1` name back and have deprecated the `sha-1` name.
| * | | Run cargo update in preparation for next releaseNick Mathewson2022-11-291-147/+157
|/ / /
* | | Merge branch 'repro-less-shm' into 'main'Nick Mathewson2022-11-292-10/+4
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | reproducible builds without shm Closes #614 See merge request tpo/core/arti!818
| * | | use newer version of zstd and lzmatrinity-1686a2022-11-292-10/+4
| | |/ | |/|
* | | Merge branch 'redacted' into 'main'Ian Jackson2022-11-2917-13/+326
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Define a "redactable" trait, and use it when logging guard info Closes #648 and #627 See merge request tpo/core/arti!882
| * | | Rustdoc fix: escape []s.Nick Mathewson2022-11-281-1/+1
| | | |
| * | | safelog: Make MaybeRedacted<T> opaque.Nick Mathewson2022-11-283-22/+12
| | | |
| * | | GuardMgr: Treat Guards as sensitive and Bridges as redacted.Nick Mathewson2022-11-283-5/+46
| | | | | | | | | | | | | | | | | | | | This machinery is a bit inelegant, but it is all confined to be within the GuardMgr crate, so IMO it should be fine for now.
| * | | Add a default debug_redacted impl to save space.Nick Mathewson2022-11-283-33/+3
| | | |
| * | | Display guards in redacted form in guard status messages.Nick Mathewson2022-11-281-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | Closes #627, again. Closes #648.
| * | | linkspec: Give a Redacted form for chantarget.Nick Mathewson2022-11-286-7/+85
| | | |
| * | | llcrypto: Make key id types Redactable.Nick Mathewson2022-11-284-0/+30
| | | |
| * | | safelog: Add a MaybeRedacted wrapper too.Nick Mathewson2022-11-281-0/+38
| | | | | | | | | | | | | | | | | | | | This is super helpful for cases where we want to write two nearly identical implementations to format a type.
| * | | safelog: implement Redactable for network addr types.Nick Mathewson2022-11-282-0/+73
| | | |
| * | | safelog: Define a "Redactable" traitNick Mathewson2022-11-282-0/+93
| |/ / | | | | | | | | | | | | | | | A "redactable" object is one that can be _partially_ scrubbed in sensitive contexts. This can be very helpful for UX, but is not risk-free: see comments.
* | | Merge branch 'more_netdoc_tests' into 'main'Ian Jackson2022-11-296-36/+323
|\ \ \ | |_|/ |/| | | | | | | | tor-netdoc: More tests for routerdesc accessors and parsing. See merge request tpo/core/arti!870
| * | netdoc: Add a test for routerdesc family parsing.Nick Mathewson2022-11-171-0/+9
| | |
| * | netdoc: Correct and test some tricky routerdesc errorsNick Mathewson2022-11-175-2/+247
| | | | | | | | | | | | These required hex-editing identity certificates :P
| * | netdoc: Add tests for routerdesc accessors.Nick Mathewson2022-11-171-1/+31
| | |
| * | Netdoc: use a different desc in tests.Nick Mathewson2022-11-172-34/+37
| | | | | | | | | | | | This is from Akka, which ahf runs.
* | | Merge branch 'ptmgr-draft' into 'main'Nick Mathewson2022-11-2814-125/+434
|\ \ \ | |_|/ |/| | | | | | | | Pluggable transport manager See merge request tpo/core/arti!886
| * | tor-chanmgr: Introduce the BootstrapReporter API, publicize ChanBuildereta2022-11-286-41/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit makes the `ChanBuilder` type in `tor-chanmgr` usable by consumers outside of that crate, like the doc comment for `ChannelFactory` says you need to be able to do in order to turn your `TransportHelper` into something useful. As part of doing this, the `event_sender` its constructor takes needed to be dealt with, since it was a crate-internal type that came from inside the `ChanMgr`. Enter `BootstrapReporter`: an opaque wrapper around that sender, now provided as an additional argument to `ChannelFactory::connect_via_transport`. You can now construct a `ChanBuilder` outside this crate, and it'll still be able to report its bootstrap status by unwrapping this new type that's threaded through from the `ChanMgr`. (This was a fair deal of manually threading the type through all the layers in this crate!) Note that you cannot implement bootstrap updating using something that isn't `ChanBuilder` yet due to the type being entirely opaque (but, of course, we can figure out exactly what API the reporter should have later, and add that capability in).
| * | Draft: Pluggable transport managereta2022-11-289-84/+323
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit implements `PtMgr`, a pluggable transport manager responsible for keeping track of spawned PTs and spawning them to satisfy client requests on demand. It does this in two parts: the `PtMgr` type exported to the rest of the code, and the background `PtReactor` that actually does the spawning; this design ensures that only one attempt to spawn a PT is active at a time, and will prove useful later for implementing e.g. timeouts. A few changes were necessary to the rest of the code in order to make this all work out. Namely: - `TransportRegistry`'s API didn't make any sense for two reasons: - It wasn't feasible for implementors to implement `ChannelFactory`, since that'd require constructing a `ChanBuilder` (which requires a bootstrap reporting event sender). - Treating the PT manager as a registry is over-general; it's only necessary for it to spawn pluggable transports, so saddling it with other concerns didn't make any sense. - (It's possible to get extensibility for arbitrary user customization by just letting the user swap in a new `ChannelFactory`, anyway.) - Therefore, the `PtMgr` implements the new `AbstractPtMgr` trait, which is far more narrowly focused; this only exists to solve a dependency loop, and is documented as such. - This provides a `TransportHelper` instead of a `ChannelFactory`.
* | Merge branch 'chanmethod-non-exhaustive' into 'main'Nick Mathewson2022-11-275-2/+35
|\ \ | | | | | | | | | | | | Make ChannelMethod non-exhaustive See merge request tpo/core/arti!891
| * | Make ChannelMethod non-exhaustiveIan Jackson2022-11-245-2/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | Enums with variants conditional on cargo features must be non-exhaustive, because cargo features are supposed to be additive, meaning that enabling a feature (which might happen due to some random distant thing) ought not to break things using that enum. There were surprisingly few places to fix this.
* | | Merge branch 'reconfig-bridges-bad' into 'main'Nick Mathewson2022-11-275-13/+78
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Require state ownership when using bridges Closes #612 See merge request tpo/core/arti!889
| * | | tor-guardmgr: rustfmt for recent changesIan Jackson2022-11-242-5/+6
| | | | | | | | | | | | | | | | Left unsquashed for ease of review
| * | | tor-guardmgr: NoLock error: add TODO for trying to get lockIan Jackson2022-11-241-0/+2
| | | | | | | | | | | | | | | | | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/889#note_2856874
| * | | tor-config: Rename to ReconfigureError::UnsupportedSituationIan Jackson2022-11-243-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From Unsupported. Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/889#note_2856873 This was added in this MR. Also add the missing semver note.
| * | | tor-config: Rename to ConfigBuildError::NoCompileTimeSupportIan Jackson2022-11-243-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From Unsupported. Following one of the suggestions here https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/889#note_2856873 This was added in 2c3711614908d0c9cf1663b20b67a3fc233301f4 which was not yet in a release so this isn't a semver break. I have added the semver note that was omitted in that MR.
| * | | tor-guardmgr: Refuse to configure bridges if we don't have the lockIan Jackson2022-11-233-1/+29
| | | | | | | | | | | | | | | | Fixes #612
| * | | tor-guardmgr: make replace_bridge_config fallibleIan Jackson2022-11-232-7/+38
| | | | | | | | | | | | | | | | | | | | | | | | The error type needs to be convertible to GuardMgrError and also to ReconfigureError. Neither of those is right, so we need a new error type.
| * | | tor-guardmgr: Replace a let _ignore with a typed versionIan Jackson2022-11-231-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `let _ignore =` isn't great because if the function called is currently infallible, but becomes fallible, it suppresses the detection of the error check. A better pattern is to specify the type of the ignored value. I'm about to do precisely this, here. I did a git-grep and `let _ignore =` seems very common. Let's not deal with all those now.
* | | | Merge branch 'rustls-0.20' into 'main'Nick Mathewson2022-11-273-66/+47
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rustls 0.20 Closes #305 See merge request tpo/core/arti!821
| * | | | fix deprecation warnings from rustlstrinity-1686a2022-11-261-9/+7
| | | | |
| * | | | upgrade rustls to 0.20, ignoring all deprecation warningstrinity-1686a2022-11-263-60/+43
|/ / / /
* | | | Merge branch 'restore_nightly' into 'main'Ian Jackson2022-11-241-3/+7
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | Switch CI back to nightly. Closes #633 See merge request tpo/core/arti!884
| * | | Switch CI back to nightly.Nick Mathewson2022-11-241-3/+7
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that they have merged https://github.com/rust-lang/rust/pull/104416 , our CI should pass again with the regular nightly image. Rather than remove the pinned image entirely, I'm commenting it out, with a comment explaining how to pin an image the next time we need to do so. Closes #633.
* | | Merge branch 'sensitive-error' into 'main'Ian Jackson2022-11-2311-31/+115
|\ \ \ | | | | | | | | | | | | | | | | Scrub channel target information in errors See merge request tpo/core/arti!890