[Home]

Summary:ASTERISK-23018: PJSip 'allow=all' results in failed SDP negotiation
Reporter:xrobau (xrobau)Labels:
Date Opened:2013-12-17 15:16:04.000-0600Date Closed:2014-01-17 15:33:04.000-0600
Priority:MajorRegression?
Status:Closed/CompleteComponents:Channels/chan_pjsip
Versions:12.0.0-beta2 Frequency of
Occurrence
Constant
Related
Issues:
Environment:Attachments:
Description:Adding 'allow=all' to a pjsip endpoint results in a codec error:

No joint capabilities between our configuration((g723|gsm|ulaw|alaw|g726|adpcm|slin|lpc10|g729|speex|speex16|il) and incoming SDP((nothing))

Note that after speex16 the start of 'ilbc' appears to be there.
Comments:By: Joshua C. Colp (jcolp) 2013-12-17 15:35:17.001-0600

Just a comment on what the problem is here:

res_pjsip_sdp_rtp adds codecs to the SDP based on the preference order defined. When using "allow=all" no preference order is present, which means no codecs get added to the local SDP. This causes SDP negotiation to fail.

By: Matt Jordan (mjordan) 2013-12-17 17:09:08.182-0600

Ugh. Yet another reason to hate on {{allow=all}}.

In the end, we're going to have to just "pick" a preferred codec, which is less than ideal.

As odd as this may sound, I'd prefer to keep Asterisk rather simple with that - if someone says offer all, we should just walk the list and send them out the order that they come up in. Having hard-baked logic that says "g722 first, then ulaw/alaw, then g729 if it's there, etc." would just be all sorts of wrong.