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
This commit is contained in:
Alexander Traud 2021-01-21 20:28:06 +01:00 committed by Friendly Automation
parent e78239e6f5
commit 7dc0cded86
1 changed files with 5 additions and 4 deletions

View File

@ -13607,10 +13607,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 */