<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-proto/src/circuit, branch arti-v1.2.4</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.2.4</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v1.2.4'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2024-05-29T18:05:57Z</updated>
<entry>
<title>Merge branch 'poll-ready-unpin-bool' into 'main'</title>
<updated>2024-05-29T18:05:57Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-05-29T18:05:57Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=5bbed90af7b9c5fc35da550089d99ad8cea49763'/>
<id>urn:sha1:5bbed90af7b9c5fc35da550089d99ad8cea49763</id>
<content type='text'>
Tidy up the ChannelSender::poll_ready inherent method

See merge request tpo/core/arti!2171</content>
</entry>
<entry>
<title>proto: Make DataWriter::close actually do something.</title>
<updated>2024-05-29T11:28:01Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-05-28T16:30:09Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=6739f33781b957da7cb00128ba2eadc92dbabf72'/>
<id>urn:sha1:6739f33781b957da7cb00128ba2eadc92dbabf72</id>
<content type='text'>
Previously we had a bug where `&lt;DataWriter as AsyncWrite&gt;::close`
(or `shutdown` in tokio-land) would not actually have any effect.
It _would_ drop the `StreamTarget` held by the `DataWriter`, but
since the `DataReader` also held a `StreamTarget`, the
MPSC channel would not get closed, and the circuit reactor would
not realize that the stream wanted to shut down.

Now we use `mpsc::Sender::close_channel` to make our closes
effectual.

Closes #1368.

Additionally, we fix a bug where `poll_close()` never actually did
anything if the buffer had nothing in it when it was called.
Previously, `poll_flush_impl()` would exit immediately if it had no
data to flush.  That isn't what we want when we are closing!
</content>
</entry>
<entry>
<title>ChannelSender::poll_ready_unpin_bool: move to util</title>
<updated>2024-05-29T11:16:19Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2024-05-29T11:15:39Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=237eb7a53f8953b8b6697ff110e1aec686b19d50'/>
<id>urn:sha1:237eb7a53f8953b8b6697ff110e1aec686b19d50</id>
<content type='text'>
This is where it belongs.
</content>
</entry>
<entry>
<title>ChannelSender::poll_ready_unpin_bool: extension trait</title>
<updated>2024-05-29T11:16:15Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2024-05-29T11:15:08Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e0115adb172001a84867e98520341a0ad1b96628'/>
<id>urn:sha1:e0115adb172001a84867e98520341a0ad1b96628</id>
<content type='text'>
This makes this available for any Sink + Unpin.  Which we want because
we're about to wrap our ChannelSender in a Sink wrapper.

It's in the wrong place now; we'll move it in a moment.
</content>
</entry>
<entry>
<title>ChannelSender::poll_ready_unpin_bool: rename from poll_ready</title>
<updated>2024-05-29T11:15:53Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2024-05-29T10:00:44Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=ca05a4dcb9979c6916cd1f0d7ccc74af433969e0'/>
<id>urn:sha1:ca05a4dcb9979c6916cd1f0d7ccc74af433969e0</id>
<content type='text'>
This would otherwise shadow the poll_ready method, which is
confusing.

Also this paves the way for making it available for any
Sink + Unpin.

Improve the docs somewhat to explain what this thing actually is.
</content>
</entry>
<entry>
<title>proto: Make Channel explicitly Arc&lt;.&gt;</title>
<updated>2024-05-16T16:24:12Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-05-16T15:51:41Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=822ff7b1ba21ed59b697aab45fd0b00f88479cef'/>
<id>urn:sha1:822ff7b1ba21ed59b697aab45fd0b00f88479cef</id>
<content type='text'>
Previously, Channel was a type that you could Clone that implicitly
its state.  Now, Channel always appears as an Arc&lt;Channel&gt;.

This change has several benefits:

  * It makes the relationship between Channel struct and the
    underlying channel more clear.
  * It enables Channel to participate in the RPC system,
    where everything has to be an Arc&lt;.&gt;
  * It enables us to have a Weak&lt;Channel&gt;, if we ever want to.
  * It will let us move various members out of ChannelDetails.

We did this change a while ago with ClientCirc.
</content>
</entry>
<entry>
<title>proto: Move Channel send functionality into a separate type.</title>
<updated>2024-05-16T16:24:12Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-05-16T15:28:10Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=dc67de47bd716945dbf8114633e5cb6daafb17a3'/>
<id>urn:sha1:dc67de47bd716945dbf8114633e5cb6daafb17a3</id>
<content type='text'>
This serves three purposes:

  * It removes the 'send a cell' method from the channel's public
    API.  Nothing outside of tor-proto should have to use this.
  * It paves the way for giving each circuit a separate handle onto
    the channel's send functionality.  This will eventually let
    the channel multiplex among circuits more intelligently.
  * It prepares for the next commit, which will make Channel itself
    universally Arc&lt;.&gt;ed.
</content>
</entry>
<entry>
<title>proto: Explicitly enforce maxima on SENDME windows.</title>
<updated>2024-05-14T14:36:05Z</updated>
<author>
<name>Nick Mathewson</name>
<email>nickm@torproject.org</email>
</author>
<published>2024-05-14T14:36:05Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=9ffbc63e97487263a8be6550952d01094e4b026d'/>
<id>urn:sha1:9ffbc63e97487263a8be6550952d01094e4b026d</id>
<content type='text'>
No actual bug here, just technical debt:

For `SendWindow`s, our tag system already ensured that we rejected
any SENDME that didn't correspond to an appropriate drain.  Still,
it doesn't hurt to check.

For `RecvWindow`s, it would have been a protocol violation if we
ever did this, but it makes sense to make it an internal error if we
try.

Part of #1383.
</content>
</entry>
<entry>
<title>Circuit reactor: use refutable let to unnest some code</title>
<updated>2024-05-06T14:33:23Z</updated>
<author>
<name>Jim Newsome</name>
<email>jnewsome@torproject.org</email>
</author>
<published>2024-05-01T20:32:41Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=1f298a3d74385efc879dc97a528827c12e263b35'/>
<id>urn:sha1:1f298a3d74385efc879dc97a528827c12e263b35</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Circuit reactor: rename 'hop to 'hop_outbound</title>
<updated>2024-05-06T14:33:02Z</updated>
<author>
<name>Jim Newsome</name>
<email>jnewsome@torproject.org</email>
</author>
<published>2024-05-01T20:12:34Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=5ce934df7ba023ea417f732a092d70b09be30f78'/>
<id>urn:sha1:5ce934df7ba023ea417f732a092d70b09be30f78</id>
<content type='text'>
It was a bit misleading since it doesn't cover all processing for the
hop.
</content>
</entry>
</feed>
