[asterisk-bugs] [Asterisk 0014994]: [patch] Invalid SDP connection information (c=) parsing leading to one way audio

Asterisk Bug Tracker noreply at bugs.digium.com
Thu Sep 24 08:30:32 CDT 2009


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=14994 
====================================================================== 
Reported By:                frawd
Assigned To:                mnicholson
====================================================================== 
Project:                    Asterisk
Issue ID:                   14994
Category:                   Channels/chan_sip/General
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     assigned
Asterisk Version:           SVN 
JIRA:                        
Regression:                 No 
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
====================================================================== 
Date Submitted:             2009-04-29 10:33 CDT
Last Modified:              2009-09-24 08:30 CDT
====================================================================== 
Summary:                    [patch] Invalid SDP connection information (c=)
parsing leading to one way audio
Description: 
I have a one-way audio problem when a media-gateway was (re)inviting with
audio and video on two different IPs, with an SDP formatted like so:

m=audio
c=IN IP4 <ip1>
[...]
m=video
c=IN IP4 <ip2>
[...]

Looking at the code it appears that asterisk has the following algorithm
for parsing "c=" lines:

1. Look for the first "c=" line and initialize audio and video address
structure
	=> in my case, <ip1> is then initialized for audio and video
2. For each "m=" line found:
	2.1. Look for the next "c=" line STARTING AFTER THE LAST ONE (step 1.)
		=> in my case, <ip2> will be found
	2.2. Initialize audio or video structure depending on what was in "m="
		=> in my case, <ip2> is initialized for the audio part

As a result I have <ip2> for audio and <ip1> for video instead of the
contrary!!!

Could someone please confirm my analysis? I could be totally wrong..
====================================================================== 

---------------------------------------------------------------------- 
 (0111307) frawd (reporter) - 2009-09-24 08:30
 https://issues.asterisk.org/view.php?id=14994#c111307 
---------------------------------------------------------------------- 
Attached new patch against current 1.4 branch.

I reviewed coding guidelines for scanf formatting and found nothing wrong,
tell me if something specific was in your mind.

Also by "session level parameters", do you mean those global parameters
happening before the first "m="?

It's true they are not parsed, if you think it's ok, I will move the
parsing of audio/video/image specific parameters into small functions so
that:
1. It's clearer and easier to read/modify
2. I can call them several times (for global params and for media specific
params).

I've been using the current patch since about May-June 2009, with no
problems at all, and a small improvement in simultaneous new sessions per
seconds while load-testing against non-patch version (I guess because it
parses a bit better). 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2009-09-24 08:30 frawd          Note Added: 0111307                          
======================================================================




More information about the asterisk-bugs mailing list