Resiprocate is parsing correctly. Note the highlighted lines
below – t is always before a in a session description.
Scott
From:
resiprocate-users-bounces@xxxxxxxxxxxxxxxxxxxx
[mailto:resiprocate-users-bounces@xxxxxxxxxxxxxxxxxxxx] On Behalf Of Aziz
Mzili
Sent: August 24, 2007 11:12 AM
To: resiprocate-users@xxxxxxxxxxxxxxxxxxxx
Subject: [reSIProcate-users] SDP parsing order
In one of our products using resiprocate, we send an sdp
similar to the following:
v=0
o=- 416386389 0 IN IP4 56.160.21.109
s=192.168.1.109
c=IN IP4 72.175.237.109
a=cq0: 978969970219150701
a=cq2: 978969972231897453
t=0 0
m=audio 3478 RTP/AVP 120 18 0 101
a=control:trackid=1
a=fmtp:101 0-15
a=rtpmap:120 IP-MR-V25/8000
a=rtpmap:18 g729/8000
a=rtpmap:0 pcmu/8000
a=rtpmap:101 telephone-event/8000
m=video 3478 RTP/AVP 96
a=control:trackid=1
a=fmtp:96 CIF=1 QCIF=1/MAXBR=3200 profile-level-id=4DE01F
a=recvonly
a=rtpmap:96 H264/900
Resiprocate in SdpContents.cxx ( SdpContents::Session::parse(ParseBuffer& pb) ) parses 't', 'z','k',
and 'a', then 'm' . But rfc 4566 says the following in section 5 :
Some lines in each
description are REQUIRED and some are OPTIONAL,
but all MUST appear in exactly the order given here (the fixed
order
greatly enhances error detection and allows for a simple parser).
OPTIONAL items are marked with a "*".
Session
description
v= (protocol version)
o= (originator and
session identifier)
s= (session name)
i=* (session information)
u=* (URI of description)
e=* (email address)
p=* (phone number)
c=* (connection information --
not required if included in
all media)
b=* (zero or more bandwidth
information lines)
One or more time descriptions ("t=" and
"r=" lines; see below)
z=* (time zone adjustments)
k=* (encryption key)
a=* (zero or more session
attribute lines)
Zero or more media
descriptions
Time description
t= (time the session is
active)
r=* (zero or more repeat
times)
Media description, if present
m= (media name and
transport address)
i=* (media title)
c=* (connection information --
optional if included at
session level)
b=* (zero or more bandwidth
information lines)
k=* (encryption key)
a=* (zero or more media
attribute lines)
You notice that 'a' is before
't'.
and in our case the media section is not parsed.