pjsip: fix support for allow=all
authorScott Griepentrog <sgriepentrog@digium.com>
Fri, 17 Jan 2014 21:33:26 +0000 (21:33 +0000)
committerScott Griepentrog <sgriepentrog@digium.com>
Fri, 17 Jan 2014 21:33:26 +0000 (21:33 +0000)
commit2b14601bdc3a5a98095e25b3b70ec7908c908308
treea5233f6a22c2781747dad2b907ffc40f91b0dea6
parent2704b49c1b038ffd4a6a413b9973814bee7a42b3
pjsip: fix support for allow=all

This change adds improvements to support for allow=all in
pjsip.conf so that it functions as intended.  Previously,
the allow/disallow socery configuration would set & clear
codecs from the media.codecs and media.prefs list, but if
all was specified the prefs list was not updated.  Then a
call would fail when create_outgoing_sdp_stream() created
an SDP with no audio codecs.

A new function ast_codec_pref_append_all() is provided to
add all codecs to the prefs list - only those not already
on the list.  This enables the configuration to specify a
codec preference, but still add all codecs, and even then
remove some codecs, as shown in this example:

allow = ulaw, alaw, all, !g729, !g723

Also, the display order of allow in cli output is updated
to match the configuration by using prefs instead of caps
when generating a human readable string.

Finally, a change to create_outgoing_sdp_stream() skips a
codec when it does not have a payload code instead of the
call failing.

(closes issue ASTERISK-23018)
Reported by: xrobau
Review: https://reviewboard.asterisk.org/r/3131/
........

Merged revisions 405875 from http://svn.asterisk.org/svn/asterisk/branches/12

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@405876 65c4cc65-6c06-0410-ace0-fbb531ad65f3
include/asterisk/format_pref.h
main/format_pref.c
main/frame.c
main/sorcery.c
res/res_pjsip_sdp_rtp.c