Unwind the rtc git pin: rtc + webrtc 0.21.0-rc.2 from crates.io - #169
Merged
Conversation
The lann/webrtc fork rev existed to carry one rtc-sctp fix no release had: an incoming stream reset discarded received-but-undelivered messages (lann/rtc#1; the receive-side loss of #125). Upstream fixed the same bug independently in webrtc-rs/rtc#200 (in rc.1+), by the RFC 6525 mechanism: the RECONFIG is answered "In Progress" while the stream still holds readable data, and the reset is re-run once the application drains it. The srflx source-address check (webrtc-rs/rtc#136) is in the series too, so nothing the pin carried is fork-only any more. API follow-through for the rc: - rtc threads a caller-supplied `now: Instant` through construction, description setters, and sends, and wraps `poll_read` output in `TaggedRTCMessage`; the guest peer passes `Instant::now()`, its clock already. - `SettingEngine` is immutable, built by a consuming `SettingEngineBuilder`, so `WebrtcCtx`'s hook becomes `Fn(SettingEngineBuilder) -> SettingEngineBuilder`; both hook sites (the demo host's loopback opt-in, the conformance driver's loopback / mDNS settings) follow. Exact `=` pins: the two crates release in lockstep and `webrtc` depends on the exact `rtc` it shipped with. Verified: just check; examples::test-webrtc-composed; examples::test-echo-remote-composed; just conformance (148 loopback + 156 interop results, 0 failing, both committed matrices unchanged). Closes #120.
lannbot
enabled auto-merge
September 6, 2026 22:46
# Conflicts: # Cargo.toml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #120.
Why now
The
lann/webrtc@15755c6bpin existed to carry onertc-sctpfix no release had: an incoming stream reset discarded received-but-undelivered messages (lann/rtc#1, the receive-side loss of #125). Upstream fixed the same bug independently in webrtc-rs/rtc#200 (merged 2026-08-26, in rc.1+) — and by the mechanism RFC 6525 provides for it: the RECONFIG is answered In Progress while the stream still holds readable data, and the reset is re-run once the application drains it (retry_deferred_resets). The fork answered Success and deferred only the local teardown. The srflx source-address check (webrtc-rs/rtc#136) is in the series too, so nothing the pin carried is fork-only any more; lann/rtc#1 needs no upstreaming.0.21.0-rc.2(crates.io, 2026-09-04) is upstream master's current state; exact=pins because the two crates release in lockstep andwebrtcdepends on the exactrtcit shipped with.What changed in the rc that touches us
now: Instantis threaded throughRTCPeerConnectionBuilder::build,set_{local,remote}_description,send/send_text;poll_readyieldsTaggedRTCMessage. The guest peer passesInstant::now()— already its clock.SettingEngine→ consumingSettingEngineBuilder:WebrtcCtx's hook type becomesFn(SettingEngineBuilder) -> SettingEngineBuilder(public API change onwasmtime-webrtc-datachannels); both hook sites follow.opendeferred until DCEP ACK (rtc#171), SCTP stream id assigned only once the DTLS role is known — the RFC 8832 even/odd parity fix (rtc#199), zero-window deadlock at buffer-full tail (rtc#217), inbound channels gated on SCTP readiness (rtc#228), RFC 9260 initial RTO (rtc#226).Verification
just check(fmt, clippy on every target, WIT, 22 tests)just examples::test-webrtc-composed,just examples::test-echo-remote-composedjust conformance: 148 loopback + 156 interop results, 0 failing, both committed matrices byte-identicalshadow-lab.Automerge armed.