asterisk/main/libasteriskpj.c
Richard Mudgett 6f3e8c8e01 PJPROJECT logging: Fix detection of max supported log level.
The mechanism used for detecting the maximum log level compiled into the
linked pjproject did not work.  The API call simply stores the requested
level into an integer and does no range checking.  Asterisk was assuming
that there was range checking and limited the new value to the allowable
range.  To get the actual maximum log level compiled into the linked
pjproject we need to get and save off the initial set log level from
pjproject.  This is the maximum log level supported.

* Get and save off the initial log level setting before altering it to the
desired level on startup.  This has to be done by a macro rather than
calling a core function to avoid incorrectly linking pjproject.

* Split the initial log level warning messages to warn if the linked
pjproject cannot support the requested startup level and if it is too low
to get the pjproject buildopts for "pjproject show buildopts".

* Adjust the CLI "pjproject set log level" to check the saved max log
level and to generate normal output messages instead of a warning message.

ASTERISK-26743 #close

Change-Id: I40aa76653e2a1dece66c3f8734594b4f0471cfb4
2017-01-24 11:25:19 -06:00

53 lines
1.2 KiB
C

/*
* Asterisk -- An open source telephony toolkit.
*
* Copyright (C) 2009-2012, Digium, Inc.
* Copyright (C) 2015, Fairview 5 Engineering, LLC
*
* Russell Bryant <russell@digium.com>
* George Joseph <george.joseph@fairview5.com>
*
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
* any of the maintainers of this project for assistance;
* the project provides a web site, mailing lists and IRC
* channels for your use.
*
* This program is free software, distributed under the terms of
* the GNU General Public License Version 2. See the LICENSE file
* at the top of the source tree.
*/
/*!
* \file
* \brief Loader stub for static pjproject libraries
*
* \author George Joseph <george.joseph@fairview5.com>
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
#ifdef HAVE_PJPROJECT
#include <pjlib.h>
#endif
#include "asterisk/options.h"
#include "asterisk/_private.h" /* ast_pj_init() */
/*!
* \internal
* \brief Initialize static pjproject implementation
*/
int ast_pj_init(void)
{
#ifdef HAVE_PJPROJECT_BUNDLED
AST_PJPROJECT_INIT_LOG_LEVEL();
pj_init();
#endif
return 0;
}