Skip to content

fix(rtp): install negotiated DTMF payload type - #73

Merged
ryanmurf merged 1 commit into
masterfrom
fix/72-negotiated-dtmf-payload
Jul 13, 2026
Merged

fix(rtp): install negotiated DTMF payload type#73
ryanmurf merged 1 commit into
masterfrom
fix/72-negotiated-dtmf-payload

Conversation

@ryanmurf

Copy link
Copy Markdown
Owner

Summary

  • remove the implicit RTP telephone-event PT 101 fallback and represent DTMF as disabled until SDP negotiates it
  • install the accepted dynamic telephone-event mapping on inbound calls and update existing outbound RTP sessions from the 2xx SDP answer
  • use the negotiated mapping for both RFC 4733 receive detection and transmit packets
  • clear DTMF support when the remote SDP does not negotiate telephone-event

RFC 4733 section 2.1 says telephone-event has no static payload type and uses a payload number established dynamically out of band; section 2.4.1 defines its SDP rtpmap relationship: https://www.rfc-editor.org/rfc/rfc4733#section-2.1 and https://www.rfc-editor.org/rfc/rfc4733#section-2.4.1

Regression coverage

  • parses an SDP audio mapping with telephone-event PT 110 and selects 110 rather than the local default PT
  • installs PT 110 on a live RTP session, sends identical RFC 4733 end-event payloads on PT 101 and PT 110, proves PT 101 remains a voice frame, and proves the receiver detects PT 110 as digit 5 with a 100 ms duration

Validation

  • cargo +1.97.0 clippy -p asterisk-sip --all-targets -- -D warnings
  • cargo +1.97.0 clippy --workspace --exclude pjsip-shim -- -D warnings
  • cargo +1.97.0 test --workspace --exclude pjsip-shim

Fixes #72

@ryanmurf
ryanmurf merged commit 4de81fd into master Jul 13, 2026
3 checks passed
@ryanmurf
ryanmurf deleted the fix/72-negotiated-dtmf-payload branch July 13, 2026 23:53
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.

Install negotiated telephone-event payload type in RTP sessions

1 participant