diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c
index 03e50633ae7447d0a7712e4431efbf9415ad75b8..359d9c1b5711f29a2a179c87cd5777aaf6006a79 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 3bb1ef4e99e2b81c3f264da801cd2ad69c68158a..244b8cc5bcfda42b2e444fda706ee8e7e5da25c6 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -445,6 +445,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;