diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c index 43b89a988c..7c7040e35b 100644 --- a/res/res_pjsip_sdp_rtp.c +++ b/res/res_pjsip_sdp_rtp.c @@ -1376,8 +1376,8 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as attr->name = STR_SENDRECV; media->attr[media->attr_count++] = attr; - /* If we've got rtcp-mux enabled, just unconditionally offer it in all SDPs */ - if (session->endpoint->rtcp_mux) { + /* If we've got rtcp-mux enabled, add it unless we received an offer without it */ + if (session->endpoint->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 8eaeb31a7b..ed637cdd52 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -1342,6 +1342,7 @@ static int add_session_media(void *obj, void *arg, int flags) } 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->rtcp_mux; session_media->keepalive_sched_id = -1; session_media->timeout_sched_id = -1; /* Safe use of strcpy */