[asterisk-dev] Is Asterisk's handling of SDP version number on a re-INVITE correct?
Kirill 'Big K' Katsnelson
kkm at adaptiveai.com
Wed May 19 07:59:14 CDT 2010
A device sends an in-dialog re-INVITE with a different SDP session user
name, identifier and version. The re-invite is rejected by Asterisk
because its version number is not increasing between existing and the
old session.
My question is whether that behavior is correct or not. process_sdp_o()
in chan_sip.c ignores the username and session id, but compares the
version. Now, RFC2327 on page 8, where the o= field is described, says:
> <session id> is a numeric string
> such that the tuple of <username>, <session id>, <network type>,
> <address type> and <address> form a globally unique identifier for
> the session.
and (pp. 8-9)
> <version> is a version number for this announcement. It is needed
> for proxy announcements to detect which of several announcements for
> the same session is the most recent. Again its usage is up to the
> creating tool, so long as <version> is increased when a modification
> is made to the session data.
The key here seems the words "the same session," which I understand as
the session identified by the same <session id>. If my understanding is
correct, then Asterisk's checking for version increment but ignoring the
session id is a bug.
Example of re-invite that is ignored
Old SDP:
v=0
o=- 1274264417 1274264417 IN IP4 10.20.0.72
s=Paraxip Media Session
c=IN IP4 10.20.0.72
t=0 0
m=audio 9102 RTP/AVP 0 8
a=recvonly
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
New SDP:
v=0
o=root 687223968 687223968 IN IP4 10.20.0.126
s=Asterisk PBX local/1.6.2/04 at 35
c=IN IP4 10.20.0.126
t=0 0
m=audio 17728 RTP/AVP 0 101
a=fmtp:101 0-16
a=ptime:20
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
a=silenceSupp:off - - - -
results in
DEBUG[10536] chan_sip.c: Call
M2Y2ZGViNjhmZDAyZWIzYjZmOGRjMWFmNTA3MjQ2OTc. responded to our reinvite
without changing SDP version; ignoring SDP.
(do not get mislead by the wording here: this is not a response to "our"
reinvite, it is their one, but processed in the same function).
-kkm
More information about the asterisk-dev
mailing list