<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-ptmgr/examples/run-pt.rs, branch arti-v1.4.2</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.4.2</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.4.2'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2023-08-24T17:03:38Z</updated>
<entry>
<title>Add initial support for running a PT in server mode</title>
<updated>2023-08-24T17:03:38Z</updated>
<author>
<name>Saksham Mittal</name>
<email>gotlouemail@gmail.com</email>
</author>
<published>2023-08-24T17:03:38Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=bbed17ba4a44a4690ad68e34844329d6542cc184'/>
<id>urn:sha1:bbed17ba4a44a4690ad68e34844329d6542cc184</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Draft: Pluggable transport manager</title>
<updated>2022-11-28T18:52:21Z</updated>
<author>
<name>eta</name>
<email>tor@eta.st</email>
</author>
<published>2022-11-22T16:24:15Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=3b41c78d6fc5eceac3b45ea9ef1540b72f9b4004'/>
<id>urn:sha1:3b41c78d6fc5eceac3b45ea9ef1540b72f9b4004</id>
<content type='text'>
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`.
</content>
</entry>
<entry>
<title>tor-ptmgr/ipc: First cut of pluggable transport spawning</title>
<updated>2022-10-26T15:07:30Z</updated>
<author>
<name>eta</name>
<email>tor@eta.st</email>
</author>
<published>2022-10-19T13:36:40Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=a118a639edfe2130931ca0003368e31834ce0669'/>
<id>urn:sha1:a118a639edfe2130931ca0003368e31834ce0669</id>
<content type='text'>
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
</content>
</entry>
</feed>
