summaryrefslogtreecommitdiff
path: root/res/res_pjsip_sdp_rtp.c
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2016-11-10 16:57:49 +0000
committerJoshua Colp <jcolp@digium.com>2016-11-11 08:17:55 -0500
commit1bd49040c45fe414a4e119a55ea7d5f209c6906a (patch)
tree1120b0b5aff0f5cd3a4861766112fa318c299470 /res/res_pjsip_sdp_rtp.c
parente77aa78dc7e32929c3cabc1fd28c2e4c198a895d (diff)
res_pjsip_sdp_rtp: Reject offer of required SRTP without res_srtp.
When optimistic SRTP was on it was possible for us to still set up a call without an audio stream if an offer was received with required SRTP. This change makes it so this scenario will now fail with a 488 response. ASTERISK-26575 Change-Id: I7d14187037681f48879bd20319ac79d0877318f3
Diffstat (limited to 'res/res_pjsip_sdp_rtp.c')
-rw-r--r--res/res_pjsip_sdp_rtp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c
index 3df9df030..7fd4f9abc 100644
--- a/res/res_pjsip_sdp_rtp.c
+++ b/res/res_pjsip_sdp_rtp.c
@@ -909,9 +909,11 @@ static int negotiate_incoming_sdp_stream(struct ast_sip_session *session, struct
res = setup_media_encryption(session, session_media, sdp, stream);
if (res) {
- if (!session->endpoint->media.rtp.encryption_optimistic) {
+ if (!session->endpoint->media.rtp.encryption_optimistic ||
+ !pj_strncmp2(&stream->desc.transport, "RTP/SAVP", 8)) {
/* If optimistic encryption is disabled and crypto should have been enabled
- * but was not this session must fail.
+ * but was not this session must fail. This must also fail if crypto was
+ * required in the offer but could not be set up.
*/
return -1;
}