From: Alexander Traud Date: Thu, 21 Jan 2021 19:28:06 +0000 (+0100) Subject: chan_sip: SDP: Reject audio streams correctly. X-Git-Tag: 19.0.0-rc1~229 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4aff42b274a3d3574736b5a3cbfb553a2a94bb03;p=thirdparty%2Fasterisk.git chan_sip: SDP: Reject audio streams correctly. This completes the fix for ASTERISK_24543. Only when the call is an outgoing call, consult and append the configured format capabilities (p->caps). When all audio formats got rejected the negotiated format capabilities (p->jointcaps) contain no audio formats for incoming calls. This is required when there are other accepted media streams. ASTERISK-29258 Change-Id: I8bab31c7f3f3700dce204b429ad238a524efebb9 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 18a02bc364..6c1914f0df 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -13608,10 +13608,11 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int ast_format_cap_append_from_cap(tmpcap, p->jointcaps, AST_MEDIA_TYPE_UNKNOWN); } - /* Check if we need audio */ - if (ast_format_cap_has_type(tmpcap, AST_MEDIA_TYPE_AUDIO) - || ast_format_cap_has_type(p->caps, AST_MEDIA_TYPE_AUDIO)) { - needaudio = TRUE; + /* Check if we need audio in this call */ + needaudio = ast_format_cap_has_type(tmpcap, AST_MEDIA_TYPE_AUDIO); + if (!needaudio && p->outgoing_call) { + /* p->caps are added conditionally, see below "Finally our remain..." */ + needaudio = ast_format_cap_has_type(p->caps, AST_MEDIA_TYPE_AUDIO); } /* Check if we need video in this call */