]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_session: Fix issue where a declined media stream in a re-INVITE would fail...
authorJoshua Colp <jcolp@digium.com>
Fri, 12 Dec 2014 12:32:13 +0000 (12:32 +0000)
committerJoshua Colp <jcolp@digium.com>
Fri, 12 Dec 2014 12:32:13 +0000 (12:32 +0000)
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/
........

Merged revisions 429407 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429408 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_pjsip_session.c

index f337325122757d2c798c0df59b0f6ab8bedf2b09..53cd8c823bc7f4cecc44a8f791c704653c8e47da 100644 (file)
@@ -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;