All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Possible incorrect RTT calculation on packet loss.
- Relaxed sequence number handling for stream reset requests.
- Corrected outgoing requests to be compliant with RFC6525.
- Optimized performance of message reassembly.
- Corrected "Fast Recovery" retransmission logic.
- Corrected outstanding data calculation.
- Added OnLifecycleMessageFullySent lifecycle events when sending message.
- Fixed bug where delayed SACKs would be sent immediately when time advances.
- Replaced
rngcrate dependency with more lightweightfastrand. - Removed dependency on
crc_anycrate. - The
rwndmember in handover state has been renamed toa_rwnd.
- Fixed a wrapping substraction during zero window probing.
- Improved chunk validation
- Fixed a socket handover bug.
- Fixed a bug with simultaneous connection attempts.
DcSctpSocket::send_many()is now implemented and accessible with CXX.- Exposed handover methods and structs in the CXX interface.
- Added
dcsctp_cxx::get_metrics()anddcsctp_cxx::reset_streams()to the CXX interface, making it expose the fullDcSctpSockettrait.
- The code is now compatible with Rust 2024 edition.
- Updated CXX interface for
dcsctp_cxx::send()to avoid copying the message payload. - Handover is now code complete, compatible with the C++ implementation.
- Most of the API methods are exposed in CXX.
- The cxx child crate is now part of the parent crate, as an optional feature.
- Time handling is revised, to use a custom SocketTime instead of Instant.
- Added CXX FFI for time handling.
- Added cxx child crate for C++ interoperability.
- Exposed Socket in the public API.
- A pull-based API for receiving messages, which allows for back-pressure to be applied when the application can't consume messages fast enough.
First release.