summaryrefslogtreecommitdiff
path: root/crates/tor-ptmgr/Cargo.toml
Commit message (Collapse)AuthorAgeFilesLines
* Bump the minor version of every crate.Nick Mathewson2022-11-301-9/+9
| | | | | We made this job easy this time around: by incrementing our MSRV, we have forced ourselves to do at least a minor bump everywhere.
* ptmgr: Use anonymize_home when displaying paths in errorsNick Mathewson2022-11-291-0/+1
|
* PtMgr: Use a persistent state directory for PT state.Nick Mathewson2022-11-281-1/+0
| | | | | | | | | | 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
* PtMgr: New features section in README.mdNick Mathewson2022-11-281-0/+1
| | | | | | | 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-281-0/+8
| | | | | | | | 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.
* Draft: Pluggable transport managereta2022-11-281-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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`.
* tor-ptmgr: make configuration use builders, plumb into arti-clienteta2022-11-161-0/+1
| | | | | | | This brings the draft configuration mechanisms in tor-ptmgr in line with the config in other crates, using builders. It also plumbs the config type through into the main `arti-client` config, and adds some example lines to `arti-example-config.toml`.
* bump rust-version to 1.60 in every crate.Nick Mathewson2022-11-101-1/+1
|
* tor-ptmgr/ipc: First cut of pluggable transport spawningeta2022-10-261-1/+17
| | | | | | | | | | | | | | | | | | | | | | | The new `ipc` module inside `tor-ptmgr` implements the Pluggable Transport Specification version 1 (`pt-spec.txt`, https://gitlab.torproject.org/tpo/core/torspec/-/blob/main/pt-spec.txt). This enables module users to spawn pluggable transport binaries inside a child process asynchronously, and receive structured information about how to connect to the transports provided by said binaries. Internally, this is structured as a pure set of serialisers and deserialisers for the protocol in the specification (in the form of environment variables, and the PT's stdout), a wrapper to run the PT binary and enable accessing its output asynchronously, and a user-facing wrapper that handles ensuring all the requested transports launched properly. The included `run-pt` example is an exceedingly minimal wrapper program that was useful in testing. More tests can and should be added in a further MR. closes arti#394; part of arti#69
* Bump minor version of tor-rtcompat and most of its dependentsNick Mathewson2022-10-031-3/+3
| | | | | | | (Since the APIs for the `Schedule::sleep*` functions changed, this is a breaking change in tor-rtcompat. Therefore, the Runtime trait in tor-rtcompat is now a different trait. Therefore, anything that uses the Runtime trait in its APIs has also broken.)
* Bump crates that have had backward compatible API changes.Nick Mathewson2022-10-031-1/+1
|
* Add the skeleton of a tor-ptmgr crateNick Mathewson2022-09-231-0/+26
When complete, this crate will handle launching and using pluggable transports on demand.