- Bugfix release (#85).
- Send RST frame if the window of a dropped stream is 0 and it is in state
SendClosed
(#84).
- Removed
bytes
(#77) andthiserror
(#78) dependencies. - Removed implicit
BufWriter
creation (#77). Client code that depends on this (undocumented) behaviour needs to wrap the socket in aBufWriter
before passing it toConnection::new
. - Added
Connection::is_closed
flag (#80) to immediately returnOk(None)
fromConnection::next_stream
afterErr(_)
orOk(None)
have been returned previously.
- Control and stream command channels are now closed and drained immediately
on error. This is done to prevent client code from submitting further close
or other commands which will never be acted upon since the API contract of
Connection::next_stream
is that afterNone
or anErr(_)
is returned it must not be called again.
- Updates nohash-hasher dependency to v0.2.0.
- A new configuration option
lazy_open
(off by default) has been added and inbound streams are now acknowledged (#73). Iflazy_open
is set totrue
we will not immediately send an initialWindowUpdate
frame but instead just set theSYN
flag on the first outboundData
frame. SeeConfiguration::set_lazy_open
for details.
- Log connection reset errors on debug level (#72).
- Hide
StreamId::new
and update dependencies.
Update to use and work with async/await:
Config::set_max_pending_frames
has been removed. Internal back-pressure made the setting unnecessary. As another consequence the errorConnectionError::TooManyPendingFrames
has been removed.Connection
no longer has methods to open a new stream or to close the connection. Instead a separate handle typeControl
has been added which allows these operations concurrently to the connection itself.- In Yamux 0.2.x every
StreamHandle
I/O operation would drive theConnection
. Now, the only way theConnection
makes progress is through itsnext_stream
method which must be called continuously. For convenience a functioninto_stream
has been added which turns theConnection
into afutures::stream::Stream
impl, invokingnext_stream
in itspoll_next
method. StreamHandle
has been renamed toStream
and its methodscredit
andstate
have been removed.Stream
also implementsfutures::stream::Stream
and producesPacket
s.ConnectionError::StreamNotFound
has been removed. Incoming frames for unknown streams are answered with a RESET frame, unless they finish the stream.DecodeError
has been renamed toFrameDecodeError
andDecodeError::Type
corresponds toFramedDecodeError::Header
which handles not just unknown frame type errors, but more. Hence a new errorHeaderDecodeError
has been added for those error cases.
- Updated dependencies (#56).
- Bugfix release (pull request #54).
- Added
max_pending_frames
setting toConfig
. AConnection
buffers outgoing frames up to this limit (see pull request #51). - Added
ConnectionError::TooManyPendingFrames
ifmax_pending_frames
has been reached. - Changed error types of
Connection::close
andConnection::flush
fromstd::io::Error
toyamux::ConnectionError
. - Removed
Connection::shutdown
method which was deprecated since version 0.1.8.
- Add
read_after_close
setting toConfig
which defaults totrue
to match the behaviour of previous versions. Settingread_after_close
tofalse
will cause stream reads to return withOk(0)
as soon as the connection is closed, preventing them from reading data from their buffer.
- Mark
Connection::shutdown
as deprecated (#44).
- Bugfix release (#36).
- Support for half-closed streams (#38).
- Avoids redundant RESET frames (#37).
- Better test coverage (#40, #42).
- Bugfix release (pull requests #34 and #35).
- Bugfix release (pull request #33).
- Bugfix release (pull requests #30 and #31).
- Bugfix release (pull requests #27 and #28).
- Bugfix release. See pull request #26 for details.
- Forward
Stream::poll
to the newly addedConnection::poll
method which acceptsself
as a shared reference. See pull request #24 for details.
- Initial release.