res_pjsip: Fix pjsip.conf type=global object default value handling.
authorRichard Mudgett <rmudgett@digium.com>
Wed, 11 Mar 2015 15:26:32 +0000 (15:26 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Wed, 11 Mar 2015 15:26:32 +0000 (15:26 +0000)
commit89b65f5dda9e2010c286f2d2755662ebacd73fde
tree6ad40c64399c88fa811061a42a50ab38e755d1c7
parent185d2e082aad9962c7d94255158a49ca9b82536b
res_pjsip: Fix pjsip.conf type=global object default value handling.

When a type=global section is not defined in pjsip.conf the global
defaults are not applied.  As a result the mandatory Max-Forwards header
is not added to SIP messages for res_pjsip/chan_pjsip.

The handling of pjsip.conf type=global objects has several problems:

1) If the global object is missing the defaults are not applied.

2) If the global object is missing the default_outbound_endpoint's default
value is not returned by ast_sip_global_default_outbound_endpoint().

3) Defines are needed so default values only need to be changed in one
place.

* Added a sorcery instance observer callback to check if there were any
type=global sections loaded.  If there were more than one then issue an
error message.  If there were none then apply the global defaults.

* Fixed ast_sip_global_default_outbound_endpoint() to return the
documented default when no type=global object is defined.

* Made defines for the global default values.

* Increased the default_useragent[] size because SVN version strings can
get lengthy and 128 characters may not be enough.

* Fixed an off-nominal code path ref leak in global_alloc() if the string
fields fail to initialize.

* Eliminated RAII_VAR in get_global_cfg() and
ast_sip_global_default_outbound_endpoint().

ASTERISK-24807 #close
Reported by: Anatoli

Review: https://reviewboard.asterisk.org/r/4467/
........

Merged revisions 432766 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432767 65c4cc65-6c06-0410-ace0-fbb531ad65f3
include/asterisk/res_pjsip.h
res/res_pjsip/config_global.c
res/res_pjsip/pjsip_configuration.c