From 61fe4f10d230d09b5246c97675637810ffed2fa2 Mon Sep 17 00:00:00 2001 From: Joshua Colp Date: Fri, 12 Dec 2014 12:31:20 +0000 Subject: [PATCH] res_pjsip_session: Fix issue where a declined media stream in a re-INVITE would fail SDP negotiation. In the past the SDP negotiation within res_pjsip_session was made more tolerant of certain situations. The only case where SDP negotiation will fail is when a major error occurs during negotiation. Receiving an already declined media stream is not considered a major error. When producing the local SDP the logic took this into account so on the initial INVITE the declined media stream did not cause an SDP negotiation failure. Unfortunately the logic for handling media streams with a handler did not mirror this logic and considered an already declined media stream an error and thus failed the SDP negotiation. This change makes the logic between both situations match so only under major errors will the SDP negotiation fail. ASTERISK-24607 #close Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/4254/ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429407 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- res/res_pjsip_session.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c index f337325122..53cd8c823b 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -2039,9 +2039,9 @@ static int add_sdp_streams(void *obj, void *arg, void *data, int flags) int res; if (handler) { - /* if an already assigned handler does not handle the session_media or reports a catastrophic error, fail */ + /* if an already assigned handler reports a catastrophic error, fail */ res = handler->create_outgoing_sdp_stream(session, session_media, answer); - if (res <= 0) { + if (res < 0) { return 0; } return CMP_MATCH;