Skip to content

fix(rtp): tolerate muxed RTCP on RTP ingress#165

Merged
ryanmurf merged 1 commit into
masterfrom
fix/rtcp-mux-ingress-tolerance
Jul 18, 2026
Merged

fix(rtp): tolerate muxed RTCP on RTP ingress#165
ryanmurf merged 1 commit into
masterfrom
fix/rtcp-mux-ingress-tolerance

Conversation

@ryanmurf

Copy link
Copy Markdown
Owner

Summary

  • demux RTCP immediately after UDP receive and before RTP source/framing/PT/SSRC hygiene
  • add an isolated Chime-style socket harness covering discrete RTP+1 RTCP plus SR/RR interleaved with accepted PCMU on the RTP port
  • prove Chime-style a=rtcp and a=rtcp-mux SDP parses and answers without rejection

Captured RED

Before the production demux was added:

rtp::tests::chime_rtcp_does_not_disturb_rtp_ingress ... FAILED
assertion `left == right` failed
  left: 1
 right: 0

The Sender Report was entering the non-negotiated-RTP-PT counter (and the short RR took malformed-RTP handling), despite real RTP continuing around it.

GREEN

  • cargo test -p asterisk-sip chime_ -- --nocapture: 2 passed
  • cargo test -p asterisk-sip: 812 unit + 5 parser regression + 8 URI edge + 1 doc passed
  • cargo test --workspace --exclude pjsip-shim: passed
  • cargo clippy --workspace --exclude pjsip-shim -- -D warnings: passed
  • cargo build --workspace: passed

All commands used Rust 1.97.0 and CARGO_BUILD_JOBS=6. No live stack, pods, Helm, trunk, or Docker was used.

Pre-M9 gate

Muxed RTCP is now discarded before RTP ingress hygiene without changing the remote address, SSRC latch, accepted media counters, or discard counters. Separate-port RTCP is independent of the RTP socket. The active SIP channel path does not instantiate the existing RTCP SR builder, so rustisk still emits no Sender Reports; that is report-only and does not block call audio.

The M9 direct-Chime call will not break on RTCP.

@ryanmurf
ryanmurf merged commit 461ad74 into master Jul 18, 2026
3 checks passed
@ryanmurf
ryanmurf deleted the fix/rtcp-mux-ingress-tolerance branch July 18, 2026 03:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant