<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/stream.rs, branch arti-v1.1.5</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.1.5</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.1.5'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2023-05-22T15:27:44Z</updated>
<entry>
<title>proto: Create a `DataStreamCtrl` type.</title>
<updated>2023-05-22T15:27:44Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2023-05-22T15:15:14Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=0df0cf425032ff05d0d405d82436cbfd86faf3ac'/>
<id>urn:sha1:0df0cf425032ff05d0d405d82436cbfd86faf3ac</id>
<content type='text'>
The idea here is that we want to make DataStream visible to the
RPC system without requiring that the RPC session hold the
DataStream itself (or the Reader, or the Writer).  We could solve
this problem by making _all_ the state in the DataStream shared,
but that would introduce unnecessary extra locking in our critical
path.

Instead we're creating the notion of a "control handle" that lets
you manage and observe a stream without actually owning the stream.

Right now the only supported functionality is asking for the
stream's circuit.

Part of #847
</content>
</entry>
<entry>
<title>Rename onion-* cargo features to hs-* in tor-* crates</title>
<updated>2023-02-28T11:10:17Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2023-02-24T14:26:25Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=f63c7c48afd94fe9d09746f0b76fbaff8d4a1a79'/>
<id>urn:sha1:f63c7c48afd94fe9d09746f0b76fbaff8d4a1a79</id>
<content type='text'>
Fixes #756
</content>
</entry>
<entry>
<title>tor-proto: Introduce CmdChecker, and define it for our streams.</title>
<updated>2023-02-17T16:50:27Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2023-02-17T16:50:27Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c5be3c089efc75453762ea975a9a96e6560057dc'/>
<id>urn:sha1:c5be3c089efc75453762ea975a9a96e6560057dc</id>
<content type='text'>
The role of CmdChecker is to verify that messages are arriving at
the appropriate sequence on a stream, with respect to the other
messages that have been received.  Once the stream becomes
half-closed, the CmdChecker is also in charge of consuming incoming
messages on the stream and making sure that they are well-formed.
</content>
</entry>
<entry>
<title>tor-proto: Draft API to handle incoming BEGIN requests.</title>
<updated>2023-01-17T20:20:03Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2023-01-11T19:43:43Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=12845d6e1ede396cd85fbacec3656b926e0896bc'/>
<id>urn:sha1:12845d6e1ede396cd85fbacec3656b926e0896bc</id>
<content type='text'>
Onion services (and later, exits and caches) will need this.
</content>
</entry>
<entry>
<title>Improve the layout of crate exports; add runtime convenience functions</title>
<updated>2022-01-11T15:16:03Z</updated>
<author>
<name>eta</name>
<email>tor@eta.st</email>
</author>
<published>2022-01-11T15:16:03Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=41e202a3a4c582dedd2c9c5c5c60369b4a53fae0'/>
<id>urn:sha1:41e202a3a4c582dedd2c9c5c5c60369b4a53fae0</id>
<content type='text'>
This commit addresses multiple problems highlighted by arti#182:

- `arti-client` had some types in its public API that weren't accessible
  without importing another crate (`CfgPath`, `DataReader`,
  `DataWriter`). This has been fixed.
  - In addition, the doc comments for `DataReader` and `DataWriter` were
    cleaned up to be of better quality, now that they're public.
- It was impossible to use `arti-client` without also importing
  `tor-rtcompat`. This is now fixed by the addition of two convenience
  methods: `TorClient::bootstrap_with_tokio` and
  `TorClient::bootstrap_with_async_std`.
- Potentially controversially: `tor-rtcompat` now returns *concrete*
  types from methods like `current_runtime`, instead of `impl Runtime`.
  - This was needed in order to actually be able to name the `TorClient`
    type that results from using these methods.
  - This does mean we lose API flexibility, but on balance I think this
    is a good thing, because the API we *do* have is actually usable...
</content>
</entry>
<entry>
<title>Get rid of unbounded stream sender, and RawCellStream</title>
<updated>2021-11-12T15:04:27Z</updated>
<author>
<name>eta</name>
<email>tor@eta.st</email>
</author>
<published>2021-11-11T17:44:50Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c559754116678866eabe525f5b189b50cc78b5cc'/>
<id>urn:sha1:c559754116678866eabe525f5b189b50cc78b5cc</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>Merge IpVersionPreferences and the optimistic flag into one type.</title>
<updated>2021-11-10T16:04:55Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2021-11-10T16:04:55Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=5287ac1858ed3abceb7c0ec803e76b130bb27f96'/>
<id>urn:sha1:5287ac1858ed3abceb7c0ec803e76b130bb27f96</id>
<content type='text'>
It seems like a good time to do this, before we add a zillion other
arguments to begin_stream.
</content>
</entry>
<entry>
<title>Update our disclaimers and limitations sections.</title>
<updated>2021-10-27T15:13:46Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2021-10-27T15:13:46Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=134c04a67adebff719011b608dabfa6da60ed247'/>
<id>urn:sha1:134c04a67adebff719011b608dabfa6da60ed247</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move all crates into a `crates` subdirectory.</title>
<updated>2021-08-27T13:53:09Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2021-08-27T13:53:09Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=557a0ff40b3731d4690767de27010bbeff08777d'/>
<id>urn:sha1:557a0ff40b3731d4690767de27010bbeff08777d</id>
<content type='text'>
This will cause some pain for now, but now is really the best time
to do this kind of thing.
</content>
</entry>
</feed>
