webrtc-sctp
A pure Rust implementation of SCTP
0.17.2
5.7M downloads/mo
#4250 most downloaded on crates.io
webrtc-rs/webrtc
What this package is like to depend on
Last release 1 months ago
20 Jul 2026
Ships fairly regularly
a new release about every 4 months
Rarely documented
notes for 5 of 33 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
33 releases · first in 2018
4 releases in the last 12 months
see the full history below
Release timeline
33 releases · Aug 2018 to Jul 2026Releases
latest 33-
0.17.220 Jul 2026Release notes
Open source →What's Changed
- ice: Release TURN allocation even if candidate was already closed by @marcin-p-porebski in #799
- fix(ice): always send STUN consent checks (RFC 7675) by @brady-pplx in #803
- util: don't tear down UDP listener read_loop on WSAECONNRESET (Windows) by @rwtd in #812
- Release mDNS resources when connections close by @mmalmi in #818
- sctp: lower INITIAL_MTU to 1191 and expose the MTU in association::Config by @phact in #807
New Contributors
- @brady-pplx made their first contribution in #803
- @rwtd made their first contribution in #812
- @mmalmi made their first contribution in #818
- @phact made their first contribution in #807
Full Changelog: v0.17.1...v0.17.2
-
0.17.106 Feb 2026Nothing published for this version
-
0.17.031 Jan 2026Nothing published for this version
-
0.13.020 Sep 2025Nothing published for this version
-
0.12.014 May 2025Nothing published for this version
-
0.11.007 Dec 2024Nothing published for this version
-
0.10.002 May 2024Nothing published for this version
-
0.9.123 Feb 2024Nothing published for this version
-
0.9.010 Sep 2023Nothing published for this version
-
0.8.025 Feb 2023Release notes
Open source →- Fix 'attempt to add with overflow' panic in dev profile #393
- Limit the bytes in the PendingQueue to avoid packets accumulating there uncontrollably #367.
- Improve algorithm used to push to pending queue from O(n*log(n)) to O(log(n)) #365.
- Reuse as many allocations as possible when marshaling #364.
- The lock for the internal association was contended badly because marshaling was done while still in a critical section and also tokio was scheduling tasks badly #363.
Breaking
- Make
sctp::Stream::write&sctp::Stream::write_sctpasync again #367.
-
0.7.015 Nov 2022Release notes
Open source →- Increased minimum support rust version to
1.60.0. - Do not loose data in
PollStream::poll_write#341. PollStream::poll_shutdown: make sure to flush any writes before shutting down #340.- Fixed a possible bug when adding chunks to pending queue #345.
- Increased required
webrtc-utilversion to0.7.0.
Breaking changes
- Increased minimum support rust version to
-
0.6.107 Sep 2022Release notes
Open source →- Increased min version of
logdependency to0.4.16. #250 Fix log at ^0.4.16 to make tests compile by @k0nserv. - #245 Fix incorrect chunk type Display for CWR by @k0nserv.
- Increased min version of
-
0.6.023 Aug 2022Nothing published for this version
-
0.5.014 Jun 2022Release notes
Open source →Changes
Breaking changes
- The serialized format for
RTCIceCandidateInithas changed to match what the specification i.e. keys are camelCase. #153 Make RTCIceCandidateInit conform to WebRTC spec contributed by jmatss. - Improved robustness when proposing RTP extension IDs and handling of collisions in these. This change is only breaking if you have assumed anything about the nature of these extension IDs. #154 Fix RTP extension id collision contributed by k0nserv
- Transceivers will now not stop when either or both directions are disabled. That is, applying and SDP with
a=inactivewill not stop the transceiver, instead attached senders and receivers will pause. A transceiver can be resurrected by setting direction back to e.g.a=sendrecv. The desired direction can be controlled with the newly introduced public methodset_directiononRTCRtpTransceiver.- #201 Handle inactive transceivers more correctly contributed by k0nserv
- #210 Rework transceiver direction support further contributed by k0nserv
- #214 set_direction add missing Send + Sync bound contributed by algesten
- #213 set_direction add missing Sync bound contributed by algesten
- #212 Public RTCRtpTransceiver::set_direction contributed by algesten
- #268 Fix current direction update when applying answer contributed by k0nserv
- #236 Pause RTP writing if direction indicates it contributed by algesten
- Generated the
a=msidline form=line sections according to the specification. This might be break remote peers that relied on the previous, incorrect, behaviour. This also fixes a bug where an endless negotiation loop could happen. #217 Correct msid handling for RtpSender contributed by k0nserv - Improve data channel id negotiation. We've slightly adjust the public interface for creating pre-negotiated data channels. Instead of a separate
negotiated: Option<bool>andid: Option<u16>inRTCDataChannelInitthere's now a more idiomaticnegotiated: Option<u16>. If you have a pre-negotiated data channel simply setnegotiated: Some(id)when creating the data channel.
Other improvememnts
We made various improvements and fixes since 0.4.0, including merging all subcrates into a single git repo. The old crate repos are archived and all development will now happen in https://github.com/webrtc-rs/webrtc/.
-
We now provide stats reporting via the standardized
RTCPeerConnection::get_statsmethod.- #277 Implement Remote Inbound Stats contributed by k0nserv
- #220 Make stats types pub so they can be used directly contributed by k0nserv
- #225 Add RTP Stats to stats report contributed by k0nserv
- #189 Serialize stats contributed by sax
- #180 Get stats from peer connection contributed by sax
-
#278 Fix async-global-executor contributed by k0nserv
-
#276 relax regex version requirement contributed by melekes
-
#244 Update README.md instructions after monorepo merge contributed by k0nserv
-
#241 move profile to workspace contributed by xnorpx
-
#240 Increase timeout to "fix" test breaking contributed by algesten
-
#239 One repo (again) contributed by algesten
-
#234 Fix recent clippy lints contributed by k0nserv
-
#224 update call to DataChannel::accept as per data pr #14 contributed by melekes
-
#223 dtls_transport: always set remote certificate contributed by melekes
-
#216 Lower case mime types for comparison in fmpt lines contributed by k0nserv
-
#211 Helper to trigger negotiation_needed contributed by algesten
-
#209 MID generator feature contributed by algesten
-
#208 update deps + loosen some requirements contributed by melekes
-
#205 data_channel: handle stream EOF contributed by melekes
-
#204 [peer_connection] allow persistent certificates contributed by melekes
-
#202 bugfix-Udp connection not close (reopen #174) #195 contributed by shiqifeng2000
-
#199 Upgrade ICE to 0.7.0 contributed by k0nserv
-
#194 Add AV1 MimeType and RtpCodecParameters contributed by billylindeman
-
#188 Improve operations debuggability contributed by k0nserv
-
#187 Fix SDP for rejected tracks to conform to RFC contributed by k0nserv
-
#185 Adding some debug and display traits contributed by sevensidedmarble
-
#179 Fix example names in README contributed by ethagnawl
-
#176 Time overflow armv7 workaround contributed by frjol
-
#171 close DTLS conn upon err contributed by melekes
-
#170 always start sctp contributed by melekes
-
#167 Add offer/answer/pranswer constructors for RTCSessionDescription contributed by sax
Subcrate updates
The various sub-crates have been updated as follows:
- util: 0.5.3 => 0.6.0
- sdp: 0.5.1 => 0.5.2
- mdns: 0.4.2 => 0.5.0
- stun: 0.4.2 => 0.4.3
- turn: 0.5.3 => 0.6.0
- ice: 0.6.4 => 0.8.0
- dtls: 0.5.2 => 0.6.0
- rtcp: 0.6.5 => 0.7.0
- rtp: 0.6.5 => 0.6.7
- srtp: 0.8.9 => 0.9.0
- scpt: 0.4.3 => 0.6.1
- data: 0.3.3 => 0.5.0
- interceptor: 0.7.6 => 0.8.0
- media: 0.4.5 => 0.4.7
Their respective change logs are found in the old, now archived, repositories and within their respective
CHANGELOG.mdfiles in the monorepo.Contributors
A big thanks to all the contributors that have made this release happen:
- The serialized format for
-
0.4.318 Dec 2021Nothing published for this version
-
0.4.213 Nov 2021Nothing published for this version
-
0.4.128 Oct 2021Nothing published for this version
-
0.4.009 Oct 2021Nothing published for this version
-
0.3.806 Oct 2021Nothing published for this version
-
0.3.701 Oct 2021Nothing published for this version
-
0.3.626 Sep 2021Nothing published for this version
-
0.3.511 Sep 2021Nothing published for this version
-
0.3.411 Sep 2021Nothing published for this version
-
0.3.321 Aug 2021Nothing published for this version
-
0.3.101 Aug 2021Nothing published for this version
-
0.3.018 Jul 2021Nothing published for this version
-
0.2.316 Jul 2021Nothing published for this version
-
0.2.207 Jul 2021Nothing published for this version
-
0.2.103 Jul 2021Nothing published for this version
-
0.2.029 Jun 2021Nothing published for this version
-
0.1.031 May 2021Nothing published for this version
-
0.0.106 Mar 2021Nothing published for this version
-
0.0.016 Aug 2018Nothing published for this version