From: Joshua C. Colp Date: Tue, 30 Aug 2022 13:01:29 +0000 (-0300) Subject: res_pjsip_sdp_rtp: Skip formats without SDP details. X-Git-Tag: 19.7.0-rc1~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=273dd16c3c251675604b26d8f899f4116e8d2fc5;p=thirdparty%2Fasterisk.git res_pjsip_sdp_rtp: Skip formats without SDP details. When producing an outgoing SDP we iterate through the configured formats and produce SDP information. It is possible for some configured formats to not have SDP information available. If this is the case we skip over them to allow the SDP to still be produced. ASTERISK-29185 Change-Id: I3e37569aa4ca341260e6ca5904dc2f75e46a1749 --- diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c index 3e10cfdb04..e7b19e4696 100644 --- a/res/res_pjsip_sdp_rtp.c +++ b/res/res_pjsip_sdp_rtp.c @@ -1902,6 +1902,16 @@ static int create_outgoing_sdp_stream(struct ast_sip_session *session, struct as continue; } + /* It is possible for some formats not to have SDP information available for them + * and if this is the case, skip over them so the SDP can still be created. + */ + if (!ast_rtp_lookup_sample_rate2(1, format, 0)) { + ast_log(LOG_WARNING, "Format '%s' can not be added to SDP, consider disallowing it on endpoint '%s'\n", + ast_format_get_name(format), ast_sorcery_object_get_id(session->endpoint)); + ao2_ref(format, -1); + continue; + } + /* If this stream is not a transport we need to use the transport codecs structure for payload management to prevent * conflicts. */