From: Torrey Searle Date: Thu, 9 Aug 2018 07:34:17 +0000 (+0200) Subject: res/res_pjsip_sdp_rtp: put rtcp-mux in answer only if offered X-Git-Tag: 15.6.0-rc1~21^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81938082aee6ba27e6559efa2901df9146103b7d;p=thirdparty%2Fasterisk.git res/res_pjsip_sdp_rtp: put rtcp-mux in answer only if offered If in the initial sdp the caller doesn't include the line a=rtcp-mux Then asterisk shoud not include rtcp-mux in the response regardless of rtcp-mux being enabled on the endpoint ASTERISK-28007 #close Change-Id: I58e9b9f40a139afc0da5de41906cc608fb62adc7 --- diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c index 4e759acb11..279715d24a 100644 --- a/res/res_pjsip_sdp_rtp.c +++ b/res/res_pjsip_sdp_rtp.c @@ -1796,8 +1796,8 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as attr->name = !session_media->locally_held ? STR_SENDRECV : STR_SENDONLY; media->attr[media->attr_count++] = attr; - /* If we've got rtcp-mux enabled, just unconditionally offer it in all SDPs */ - if (session->endpoint->media.rtcp_mux) { + /* If we've got rtcp-mux enabled, add it unless we received an offer without it */ + if (session->endpoint->media.rtcp_mux && session_media->remote_rtcp_mux) { attr = pjmedia_sdp_attr_create(pool, "rtcp-mux", NULL); pjmedia_sdp_attr_add(&media->attr_count, media->attr, attr); } diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c index 81e7a55f9f..d52009ea61 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -446,6 +446,7 @@ struct ast_sip_session_media *ast_sip_session_media_state_add(struct ast_sip_ses session_media->encryption = session->endpoint->media.rtp.encryption; session_media->remote_ice = session->endpoint->media.rtp.ice_support; + session_media->remote_rtcp_mux = session->endpoint->media.rtcp_mux; session_media->keepalive_sched_id = -1; session_media->timeout_sched_id = -1; session_media->type = type;