-
Change the default configuration to use
MaxBufferBehaviour::Block
and yield from waiting for the next substream or reading from a particular substream whenever the current read loop may have already filled a substream buffer, to give the current task a chance to read from the buffer(s) before theMaxBufferBehaviour
takes effect. This is primarily relevant forMaxBufferBehaviour::ResetStream
. PR 1825. -
Tweak the naming in the
MplexConfig
API for better consistency withlibp2p-yamux
. PR 1822. -
Update dependencies.
- Be lenient with duplicate
Close
frames received. Version0.23.0
started treating duplicateClose
frames for a substream as a protocol violation. As some libp2p implementations seem to occasionally send such frames and it is a harmless redundancy, this releases reverts back to the pre-0.23 behaviour of ignoring duplicateClose
frames.
-
More granular execution of pending flushes, better logging and avoiding unnecessary hashing. PR 1785.
-
Split receive buffers per substream. PR 1784.
-
Address a potential stall when reading from substreams.
-
Send a
Reset
orClose
to the remote when a substream is dropped, as appropriate for the current state of the substream, removing that substream from the tracked open substreams, to avoid artificially running into substream limits. -
Change the semantics of the
max_substreams
configuration. Now, outbound substream attempts beyond the configured limit are delayed, with a task wakeup once an existing substream closes, i.e. the limit results in back-pressure for new outbound substreams. New inbound substreams beyond the limit are immediately answered with aReset
. If too many (by some internal threshold) pending frames accumulate, e.g. as a result of an aggressive number of inbound substreams being opened beyond the configured limit, the connection is closed ("DoS protection"). -
Update dependencies.
- Bump
libp2p-core
dependency.
- Bump
libp2p-core
dependency.
- Update
libp2p-core
, i.e.StreamMuxer::poll_inbound
has been renamed topoll_event
and returns aStreamMuxerEvent
.
-
Deprecated method
Multiplex::is_remote_acknowledged
has been removed as part of PR 1616. -
Updated dependencies.