res_pjsip_logger: Preserve logging state on reloads.

Currently, reloading res_pjsip will cause logging
to be disabled. This is because logging can also
be controlled via the debug option in pjsip.conf
and this defaults to "no".

To improve this, logging is no longer disabled on
reloads if logging had not been previously
enabled using the debug option from the config.
This ensures that logging enabled from the CLI
will persist through a reload.

ASTERISK-29912 #close

Change-Id: I0be7d90e7007f5a6bc4a1cb75019fbaeb18428da
changes/75/19575/2
Naveen Albert 4 years ago
parent 2cfb3df35d
commit d9020738df

@ -0,0 +1,5 @@
Subject: res_pjsip_logger
Issuing "pjsip reload" will no longer
disabling logging if it was previously
enabled from the CLI.

@ -129,6 +129,9 @@ struct pjsip_logger_session {
/*! \brief The default logger session */
static struct pjsip_logger_session *default_logger;
/*! \brief Whether or not the logger was enabled via the debug option in pjsip.conf (as opposed to via CLI) */
static int logger_enabled_via_config = 0;
/*! \brief Destructor for logger session */
static void pjsip_logger_session_destroy(void *obj)
{
@ -665,15 +668,27 @@ static void check_debug(void)
RAII_VAR(char *, debug, ast_sip_get_debug(), ast_free);
if (ast_false(debug)) {
pjsip_disable_logger(-1);
/* If the logger was enabled via the CLI instead of
* through the config file, then we shouldn't
* disable it on a reload.
* Only disable logging if the logger was previously
* enabled via the config file. */
if (logger_enabled_via_config) {
pjsip_disable_logger(-1);
}
logger_enabled_via_config = 0;
return;
}
if (ast_true(debug)) {
if (logger_enabled_via_config) {
return;
}
pjsip_enable_logger_all(-1);
return;
}
logger_enabled_via_config = 1;
if (pjsip_enable_logger_host(-1, debug, 0) != CLI_SUCCESS) {
ast_log(LOG_WARNING, "Could not resolve host %s for debug "
"logging\n", debug);

Loading…
Cancel
Save