[asterisk-bugs] [JIRA] Commented: (ASTERISK-15001) chan_sip breaks RFC by incrementing session version between non-reliable 1xx and 200
Eran Benjamin (JIRA)
noreply at issues.asterisk.org
Mon Oct 1 07:23:27 CDT 2012
[ https://issues.asterisk.org/jira/browse/ASTERISK-15001?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=197774#comment-197774 ]
Eran Benjamin commented on ASTERISK-15001:
------------------------------------------
I think there might be a regression of some sort with Asterisk 1.8.14.1 where an SDP version gets incremented between the 183 and the 200 messages without the content changing.
I have pcap files that can show this clearly.
> chan_sip breaks RFC by incrementing session version between non-reliable 1xx and 200
> ------------------------------------------------------------------------------------
>
> Key: ASTERISK-15001
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-15001
> Project: Asterisk
> Issue Type: Bug
> Components: Channels/chan_sip/General
> Reporter: Andrew Pogrebennyk
> Severity: Minor
>
> There is a contradiction to RFC in the current chan_sip implementation. In SIP the answerer may send the SDP answer in some or all of the provisional responses, but it must ultimately send the answer in a "reliable" response, either a reliable provisional response or a 2xx response. If PRACK isn't used all of these answers must be the same, including session version in the origin field.
> This is defined in the section 13.2.1 of RFC 3261:
> If the initial offer is in an INVITE, the answer MUST be in a reliable
> non-failure message from UAS back to UAC which is correlated to that
> INVITE. For this specification, that is only the final 2xx response to
> that INVITE. That same exact answer MAY also be placed in any
> provisional responses sent prior to the answer.
> According to this, session version in the o-line must be the same in the non-reliable provisional response and 200 OK. Asterisk however increments the session version each time it sends a new SDP:
> /* Set RTP Session ID and version */
> if (!p->sessionid) {
> p->sessionid = getpid();
> p->sessionversion = p->sessionid;
> } else
> p->sessionversion++;
> This behavior has been there since Nov 2003:
> http://lists.digium.com/pipermail/svn-commits/2003-November/000534.html
> I'm using Asterisk 1.4.24.1 however all newer versions contain this issue and it causes interoperability problems with some carriers.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the asterisk-bugs
mailing list