]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
chan_sip: Do not send all codecs on INVITE. Do not break on Session-Timers. 59/2459/1
authorAlexander Traud <pabstraud@compuserve.com>
Thu, 24 Mar 2016 19:08:10 +0000 (20:08 +0100)
committerAlexander Traud <pabstraud@compuserve.com>
Thu, 24 Mar 2016 19:23:11 +0000 (14:23 -0500)
Asterisk 13.7.0 included a fix for ASTERISK-24543, not to send all those
codecs, which the caller did not request/support. That fix was not complete
because on the second Session Timer all codecs were sent again. Some VoIP/SIP
clients interpreted that complete codec-list as a change in the SIP session.
Because of that, Asterisk did not send the RTP audio via NAT anymore which
created a non-audio scenario after the second Session Timer fired.

ASTERISK-24543 #close

Change-Id: I1881827816ab7fd47eb4287a95961179b34a0b66

channels/chan_sip.c

index 83d3ea0eb0ecaeb3bde3b5b04902b0eeddf6f029..91fb0b546c067093b2bd6bc046f9683ec4ed1265 100644 (file)
@@ -13530,7 +13530,7 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int
                }
 
                /* Finally our remaining audio/video codecs */
-               for (x = 0; ast_test_flag(&p->flags[0], SIP_OUTGOING) && x < ast_format_cap_count(p->caps); x++) {
+               for (x = 0; p->outgoing_call && x < ast_format_cap_count(p->caps); x++) {
                        tmp_fmt = ast_format_cap_get_format(p->caps, x);
 
                        if (ast_format_cap_iscompatible_format(alreadysent, tmp_fmt) != AST_FORMAT_CMP_NOT_EQUAL) {