Add rtcp-mux support
authorMark Michelson <mmichelson@digium.com>
Tue, 7 Mar 2017 20:13:02 +0000 (14:13 -0600)
committerMark Michelson <mmichelson@digium.com>
Wed, 15 Mar 2017 21:34:13 +0000 (16:34 -0500)
commit10fa49e3275e81860341d5ee5e0b9d15bafd9acd
tree5e3572e8fe93540cf2b297cf7a0665c9d329578d
parente536ef7afb68751fdafd56e0e9971de3afeeffd8
Add rtcp-mux support

This commit adds support for RFC 5761: Multiplexing RTP Data and Control
Packets on a Single Port. Specifically, it enables the feature when
using chan_pjsip.

A new option, "rtcp_mux" has been added to endpoint configuration in
pjsip.conf. If set, then Asterisk will attempt to use rtcp-mux with
whatever it communicates with. Asterisk follows the rules set forth in
RFC 5761 with regards to falling back to standard RTCP behavior if the
far end does not indicate support for rtcp-mux.

The lion's share of the changes in this commit are in
res_rtp_asterisk.c. This is because it was pretty much hard wired to
have an RTP and an RTCP transport. The strategy used here is that when
rtcp-mux is enabled, the current RTCP transport and its trappings (such
as DTLS SSL session) are freed, and the RTCP session instead just
mooches off the RTP session. This leads to a lot of specialized if
statements throughout.

ASTERISK-26732 #close
Reported by Dan Jenkins

Change-Id: If46a93ba1282418d2803e3fd7869374da8b77ab5
CHANGES
UPGRADE.txt
contrib/ast-db-manage/config/versions/15db7b91a97a_add_rtcp_mux.py [new file with mode: 0644]
include/asterisk/res_pjsip.h
include/asterisk/res_pjsip_session.h
include/asterisk/rtp_engine.h
res/res_pjsip.c
res/res_pjsip/pjsip_configuration.c
res/res_pjsip_sdp_rtp.c
res/res_rtp_asterisk.c