]> git.ipfire.org Git - thirdparty/asterisk.git/commit
res_pjsip_session/res_pjsip_sdp_rtp: Be more tolerant of offers
authorMatthew Jordan <mjordan@digium.com>
Fri, 17 Oct 2014 13:32:05 +0000 (13:32 +0000)
committerMatthew Jordan <mjordan@digium.com>
Fri, 17 Oct 2014 13:32:05 +0000 (13:32 +0000)
commitf4314beff021d4f4ed0d430a36dd108f7f1150d9
tree64824b0ff86cd2c6c39c02a7049b3ed7e050481a
parentb41756414a1e5f5bf1550531311cd25eab7a086b
res_pjsip_session/res_pjsip_sdp_rtp: Be more tolerant of offers

When an inbound SDP offer is received, Asterisk currently makes a few
incorrection assumptions:

(1) If the offer contains more than a single audio/video stream, Asterisk will
    reject the entire stream with a 488. This is an overly strict response;
    generally, Asterisk should accept the media streams that it can accept and
    decline the others.
(2) If the offer contains a declined media stream, Asterisk will attempt to
    process it anyway. This can result in attempting to match format
    capabilities on a declined media stream, leading to a 488. Asterisk should
    simply ignore declined media streams.
(3) Asterisk will currently attempt to handle offers with AVPF with
    use_avpf=No/AVP with use_avpf=Yes. This mismatch results in invalid SDP
    answers being sent in response. If there is a mismatch between the media
    type being offered and the configuration, Asterisk must reject the offer
    with a 488.

This patch does the following:
* Asterisk will accept SDP offers with at least one media stream that it can
  use. Some WARNING messages have been dropped to NOTICEs as a result.
* Asterisk will not accept an offer with a media type that doesn't match its
  configuration.
* Asterisk will ignore declined media streams properly.

#SIPit31

Review: https://reviewboard.asterisk.org/r/4063/

ASTERISK-24122 #close
Reported by: James Van Vleet

ASTERISK-24381 #close
Reported by: Matt Jordan

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@425868 65c4cc65-6c06-0410-ace0-fbb531ad65f3
res/res_pjsip.c
res/res_pjsip_sdp_rtp.c
res/res_pjsip_session.c